Linux中如何通过Dmesg -T追踪物理内存溢出触发的OOM-Killer进程终止详情?
- 内容介绍
- 文章标签
- 相关推荐
本文共计694个文字,预计阅读时间需要3分钟。
使用 `mesg -T | grep -i killed process | out of memory` 命令可以直接捕获 OOM Killer 杀死进程的核心记录。但要真正理解谁被杀、为什么杀、系统当时多紧张,需要结合时间、上下文和内存状态一起分析。
快速定位杀进程的原始日志
OOM 事件发生后,内核只在 ring buffer 写一次关键信息,不持久化。必须立刻执行:
- sudo dmesg -T | grep -i "killed process\|out of memory" —— 最简有效命令,-T 输出本地可读时间(如 [Wed Apr 10 09:22:17 2026]),避免相对秒数难定位
- 典型输出含:PID、进程名(如 python3)、total-vm(虚拟内存)、anon-rss(真实物理内存占用,最关键)
- 若无输出,不是没发生,而是缓冲区已被刷掉,或普通用户权限受限(RHEL/CentOS 8+ 默认 kernel.dmesg_restrict=1)
查上下文:光看“被杀”不够,要看“为啥杀”
OOM 是结果,不是起点。
本文共计694个文字,预计阅读时间需要3分钟。
使用 `mesg -T | grep -i killed process | out of memory` 命令可以直接捕获 OOM Killer 杀死进程的核心记录。但要真正理解谁被杀、为什么杀、系统当时多紧张,需要结合时间、上下文和内存状态一起分析。
快速定位杀进程的原始日志
OOM 事件发生后,内核只在 ring buffer 写一次关键信息,不持久化。必须立刻执行:
- sudo dmesg -T | grep -i "killed process\|out of memory" —— 最简有效命令,-T 输出本地可读时间(如 [Wed Apr 10 09:22:17 2026]),避免相对秒数难定位
- 典型输出含:PID、进程名(如 python3)、total-vm(虚拟内存)、anon-rss(真实物理内存占用,最关键)
- 若无输出,不是没发生,而是缓冲区已被刷掉,或普通用户权限受限(RHEL/CentOS 8+ 默认 kernel.dmesg_restrict=1)
查上下文:光看“被杀”不够,要看“为啥杀”
OOM 是结果,不是起点。

