dmesg需聚焦时间、级别、设备、错误信号四锚点:用-t显绝对时间,-l筛选err/warn级日志,-w实时监听硬件事件,操作前备份并确认config_printk启用。

直接用 dmesg 看内核日志,不是简单敲个命令就完事。关键在“聚焦”——过滤掉干扰信息,抓住时间、级别、设备和错误信号这四个锚点。否则满屏滚动的启动日志,真正出问题的那一行早被刷走了。
带时间戳看,别信默认数字
默认输出里 [ 1.234567] 这种是开机后秒数,系统重启过、挂起过,这个数字就失去参考价值。排查时优先加 -T 显示本地绝对时间:
-
dmesg -T | tail -n 30:看最近半分钟发生了什么 -
dmesg -T | grep -i "nvme\|ata\|sd[a-z]":查磁盘类异常,配合时间更容易定位IO卡顿或掉盘时刻 - 若发现时间跳变(比如从 09:12 突然跳到 09:05),说明系统曾休眠或时间同步过,此时应结合
journalctl --since "2026-03-03 09:00"交叉验证
按级别筛,先抓 err 和 warn
内核日志分 8 级,日常重点关注 err(错误)和 warn(警告),它们往往对应真实故障:
-
dmesg -l err,warn:最简筛选,立刻排除大量 info 级的正常加载日志 -
dmesg -l err,crit,alert,emerg:更严格,只留致命级事件,适合崩溃后快速定性 - 注意:
error不一定出现在日志级别字段里,有时藏在消息正文,所以grep -i "error\|fail\|timeout\|reset"仍有必要
实时盯住硬件事件
USB 插拔、磁盘识别、网卡重置这类动作转瞬即逝,翻历史日志大概率漏掉。必须用 -w 持续监听:
-
dmesg -w | grep -i "usb\|xhci\|ehci":插 U 盘时终端立刻出响应 -
dmesg -w | grep -i "nvme\|timeout\|link down":监控 NVMe 盘链路异常 -
-w比老式-f更可靠,缓冲区翻转时自动续读,不会中断
保存与复位要留痕
内核日志不落盘,重启即丢。操作前养成备份习惯:
- 查问题前先存档:
dmesg > /tmp/dmesg-before.log - 复位缓冲区用
dmesg -c,它会清空并输出当前全部内容,比dmesg -C更安全(后者只清不输出) - 某些容器或嵌入式环境
dmesg返回空,先确认是否启用CONFIG_PRINTK内核选项,或改用journalctl -k替代
不复杂但容易忽略:dmesg 是内核的“第一手记录”,它不美化、不汇总、不延迟。看懂它,等于拿到系统底层运行的原始录像带。










