dmesg

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_vm15023209M