当Linux内存不足(OOM)耗尽时,OOM杀手根据一些启发式方法选择一个要杀死的进程(这很有趣:http : //lwn.net/Articles/317814/)。
如何以编程方式确定OOM杀手最近杀死了哪些进程?
当Linux内存不足(OOM)耗尽时,OOM杀手根据一些启发式方法选择一个要杀死的进程(这很有趣:http : //lwn.net/Articles/317814/)。
如何以编程方式确定OOM杀手最近杀死了哪些进程?
Answers:
试试看:
grep -i 'killed process' /var/log/messages
/var/log/syslog
某些发行版中的syslog也存在/var/log/messages
。我认为前者是Debian,后者是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