dmesg这个命令,全称是 display message 或 driver message,专门用来展示内核的启动信息和运行时状态。说白了,它就是系统内核的“黑匣子”,尤其在诊断系统崩溃时,是首选的排查工具。下面聊聊怎么用它来定位问题。

系统刚崩溃,别急着重启(如果还进得去系统),第一时间在终端敲下
dmesg。这么做是为了确保看到的是最新鲜的内核消息,否则重启后日志就被冲掉了。大多数 Linux 发行版直接运行就能输出。输出内容通常很长,别慌,重点抓几个关键词:
error、failed、panic。这些信号往往直接指向崩溃的根源,比如某个驱动异常、内核恐慌,或者硬件错误。硬件驱动信息是排查的重点。内核在加载每个驱动时都会在
dmesg里留痕,如果某个设备驱动报错或者加载失败,系统很可能因此崩溃。注意看有没有类似Firmware bug、Buffer I/O error的提示。内存问题也是常见诱因。搜索
OOM(Out of Memory)关键字,一旦出现,说明系统因为内存耗尽杀掉了进程,极端情况下会导致整体崩溃。另外,像Memory corruption或EDAC相关的报错,暗示硬件内存可能有故障。模块加载信息同样值得细看。系统启动时会按顺序加载各个内核模块,如果某个模块与现有硬件或别的模块冲突,加载过程就会报错。比如
modprobe失败或Unknown symbol这类信息,多半是模块兼容性出了问题。输出太长阅读困难?用管道配合
grep过滤,比如dmesg | grep -i "error",只显示包含 error 的行(不区分大小写)。同样,也可以同时搜索多个关键词:dmesg | grep -E "error|panic|failed",效率高得多。如果当前没法仔细分析,把日志保存下来。执行
dmesg > dmesg_output.txt,然后拷贝到另一台机器或者用文本编辑器慢慢看。这一步非常重要,因为崩溃后系统可能随时彻底死掉,先存一份再说。自己啃不下来怎么办?把刚才保存的
dmesg日志扔到搜索引擎里,或者去技术论坛(比如 Stack Exchange、Linux 社区)发帖。注意只贴关键报错片段,别把整篇日志甩上去——没人愿意读几千行无关信息。问题修完别急着庆祝,重启系统,再次运行
dmesg确认。确保之前看到的报错信息不再出现,或者至少没有新的致命错误。这一步很关键,否则可能在运行时再次崩溃。
以上步骤基本覆盖了 dmesg 诊断系统崩溃的核心用法。当然,它只是工具箱里的一把扳手,遇到复杂问题还需要结合 journalctl、syslog 甚至调试工具一起上。但大多数常见崩溃,通过 dmesg 都能找到清晰的线索,值得花时间仔细排查。