dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题 通常非常有用。dmesg可以查看因Out of memory被Kill的进程。
dmesg [options]
-c 显示信息后,清除ring buffer中的内容
-s <size> 默认值为8196,刚好等于ring buffer的大小
-n 设置记录信息的层级
-D 禁用打印消息到控制台
-E 启用打印消息到控制台
-h 打印帮助文本并退出
-k 打印内核消息
-n 设置将消息记录到控制台的级别
-r 打印原始消息缓冲区
-s 使用多少大小的缓冲区来查询内核环缓冲区。 默认情况下为16392
-T 打印人类可读时间戳
-t 不打印内核的时间戳
-u 打印用户空间消息
-V 输出版本信息并退出
-x 将设施和级别(优先级)编号解码为可读的前缀
dmesg -T
dmesg -T | egrep -i -B100 'killed process'
[Tue Jan 3 00:22:04 2023] Tasks state (memory values in pages):
[Tue Jan 3 00:22:04 2023] [ pid ] uid tgid total_vm rss pgtables_bytes swapents oom_score_adj name
...略...
[Tue Jan 3 00:22:05 2023] [ 12279] 994 12279 15023209 8673948 81862656 0 0 impalad
...略...
[Tue Jan 3 00:22:05 2023] Out of memory: Kill process 12279 (impalad) score 537 or sacrifice child
[Tue Jan 3 00:22:05 2023] Killed process 12279 (impalad) total-vm:60092836kB, anon-rss:34695792kB, file-rss:0kB, shmem-rss:0kB
[Tue Jan 3 00:22:06 2023] oom_reaper: reaped process 12279 (impalad), now anon-rss:0kB, file-rss:0kB, shmem-rss:20kB
可以看到 Killed process 12279 (impalad)被kill时的total_vm为15023209M