如何准确找出哪个进程被 OOM killer 杀死了?

如何准确找出哪个进程被 OOM killer 杀死了?

OOM 终止程序刚刚终止了某个进程。当值grep oom_kill /proc/vmstat增加时,我可以知道。

我如何知道具体哪个进程被终止了(名称、进程标识符、所有者等等)以及具体时间(时间戳)?

答案1

了解最近的 OOM-kill 详细信息的一种粗鲁但简单的方法是到处进行 grep(正确的日志路径可能因 distrib 而异):

sudo dmesg -T | grep -Ei 'killed process|oom.killer'
sudo grep -Ei 'killed process|oom.killer' /var/log/messages /var/log/syslog 2>/dev/null

.在正则表达式中表示“任何字符” grep,因此它会找到同时包含“oom-killer”和“oom killer”的行。

2>/dev/null最后,如果您的系统中没有这样的日志文件,则需要摆脱“没有这样的文件或目录”错误。

答案2

在日志中查找来自 OOM 杀手事件的条目。

sudo grep -i "oom-killer" /var/log/messages

结果看起来像这样:

kernel: [timestamp] Out of memory: Kill process [process_name] ([process_pid]), UID [user_id]/[username], VmSize:[memory_size] kB, VmRSS:[resident_memory_size] kB, MemLimit:[memory_limit] kB

相关内容