리눅스에 메모리가 부족할 때 (OOM) OOM 킬러는 일부 휴리스틱을 기반으로 강제 종료 할 프로세스를 선택합니다 (흥미로운 읽기 : http://lwn.net/Articles/317814/ ).
OOM 킬러가 최근에 종료 한 프로세스를 프로그래밍 방식으로 어떻게 확인할 수 있습니까?
리눅스에 메모리가 부족할 때 (OOM) OOM 킬러는 일부 휴리스틱을 기반으로 강제 종료 할 프로세스를 선택합니다 (흥미로운 읽기 : http://lwn.net/Articles/317814/ ).
OOM 킬러가 최근에 종료 한 프로세스를 프로그래밍 방식으로 어떻게 확인할 수 있습니까?
답변:
이것을 시도하십시오 :
grep -i 'killed process' /var/log/messages
/var/log/syslog
일부 배포판과 /var/log/messages
다른 배포판 에 있습니다. 나는 그것이 전자의 데비안이고 후자는 BICBW의 데비안이라고 생각합니다.
egrep
여기서 이해가되지 않습니다. 평범한 구식 grep
이거나 우리가 구체적이라면 fgrep
훨씬 더 의미가 있습니다. (그에 따라 답변을 편집합니다.)
로그의 위치에 대해 걱정할 필요가 없도록 시도하십시오.
dmesg | egrep -i 'killed process'
/var/log/messages
는 없지만 dmesg
/에 표시되지 않는 결과 가 나타납니다 /var/log/dmesg
. 구성이 잘못되었을 수 있지만 두 가지 방법을 모두 사용하는 것이 좋습니다.
dmesg -T
읽을 수있는 타임 스탬프를 얻기 위해 사용 하는 것이 좋습니다
이제 dstat는 실행중인 시스템에서 oom 메커니즘에 의해 강제 종료 될 프로세스를 찾을 수있는 기능을 제공합니다.
dstat --top-oom
--out-of-memory---
kill score
java 77
java 77
java 77
그리고 맨 페이지 당
--top-oom
show process that will be killed by OOM the first