商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看内核日志dmesg信息

Linux怎么查看内核日志dmesg信息

  发布于2026-06-23 阅读(0)

扫一扫,手机访问

直接键入 dmesg 查看内核日志,恐怕是很多工程师面对系统异常时的第一个下意识动作。但结果往往令人失望:屏幕上飞快滚动着几万行历史启动信息,真正的错误早就淹没在信息海洋里,无处寻觅。

其实,内核日志是个金矿,只是你需要一套正确的“挖掘”方法。关键在于利用 dmesg 自身的过滤和格式化能力,配合明确的场景进行解读。

Linux怎么查看内核日志dmesg信息

只看 error/warning 级别,别再 grep 关键词了

内核自己为每条日志都打上了清晰的级别标签,比如 errwarninfo。这些内部标记,可比你在字符串里搜索 “error”“fail” 可靠多了。

  • 最直接的方法是:dmesg -l err,warn。这个命令会直接筛选出错误和警告级别的信息,绝大多数的硬件异常、驱动加载失败或 I/O 超时问题,最终都会落在这个范围里。
  • 想更醒目一些?加个 -L 参数开启彩色输出:dmesg -L -l err,warn。鲜红色高亮的关键错误行,扫一眼就能定位。
  • 必须警惕的是那种 dmesg | grep -i error 的写法。很多日志本身只是信息记录,但内容碰巧包含了“error”这个词,这样一 grep,反而引入了大量无用信息,干扰判断。

时间戳必须用 -T,别管那串开机秒数了

dmesg 默认显示的时间戳是自系统启动以来的秒数(如 [1.234567])。这个数字每次重启都会归零,一旦系统休眠过,就完全无法和现实时间对齐,排查历史问题时基本失效。

  • 正确的做法是使用 dmesg -T。它会将时间戳转换为易读的本地时间格式,例如:[Wed Jun 11 13:22:45 2026]
  • 组合使用是常规操作:dmesg -T -l err,warn 既能看到关键信息,又能知道具体发生的时间。
  • 这里有个例外:部分非常老旧的Linux内核可能不支持 -T 参数。如果发现命令无效,可以改用 journalctl -k --since "1 minute ago" 来查看指定时间段内的内核日志。

实时监控关键硬件事件,-w 才是唯一选择

像 USB 设备热插拔、NVMe 固态硬盘链路中断、网卡意外重置这类瞬态事件,等你去翻阅历史日志时,早就被新消息顶出缓冲区了。

  • 这时你需要 dmesg -w。这是内核原生支持的实时监控模式,会持续监听并输出新产生的日志,当环形缓冲区翻转时,它能确保你不丢失任何消息。
  • 注意,有些文档可能会提到 dmesg -fdmesg --follow,但它们已被官方标记为可能弃用或不稳定,在某些内核版本下甚至会卡住,因此不推荐。
  • 实战中,可以配合 grep 进行过滤:dmesg -w | grep -i "usb\|nvme\|ata"。当你插入一块硬盘或试图复现问题时,终端立刻就会给出响应。
  • 如果执行 dmesg -w 后没有任何输出,先别慌。这可能是因为内核在编译时未启用 CONFIG_PRINTK 或启用了限制(常见于某些容器或精简内核),这种情况下改用 journalctl -k -f 即可。

清空日志是危险动作,务必先导出备份

内核日志缓冲区大小是有限的(通常 128KB 到 256KB),遵循环形队列的规则,旧消息会被新产生的日志覆盖。但在排查问题时,贸然清空缓冲区,很有可能把刚刚发现的关键线索给冲掉。

  • 最稳妥的习惯是:在清空前,先用 dmesg > /tmp/dmesg-before.log 将当前日志完整导出备份。
  • 如果需要边导出边清空,使用 dmesg -c。这个命令会先读取并输出当前全部内容,然后再清空缓冲区,相当于“一键备份并清空”。
  • 绝对不要 使用 dmesg -C。它只会做一件事:清空缓冲区,并且不输出任何内容。一旦执行,除非你有其他地方的日志备份(如 journalctl -k/var/log/kern.log),否则丢失的日志线索几乎无法找回。

话说回来,掌握这些命令参数只是第一步。真正的难点在于判断:哪条日志是需要立即处理的致命错误,而哪条只是无关紧要的噪音?比如:

  • 短时间内连续出现三次 buffer I/O errorUNC error 这类日志,往往意味着硬盘很可能已经开始出现坏块,数据有丢失风险。
  • 而像 ACPI: EC: GPE storm detected 这样的警告,很多时候只是主板的固件(BIOS/UEFI)存在微小缺陷,系统已经自动处理,通常无需人工干预。

这类判断,来自于对系统整体表现(如卡顿、服务中断、设备失联)与日志信息的反复对照,是经验积累的结果,远非堆砌命令参数就能解决。

本文转载于:https://www.php.cn/faq/2692044.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注