dmesg 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
dmesg——日志、时间与计划任务命令族(见日志、时间与计划任务命令族)。开机卡住、网卡认不出、磁盘报错,第一眼看内核日志就是它。
dmesg 打印内核的环形缓冲区(ring buffer)消息:开机自检、驱动加载、硬件插拔、内核报错都记在这里。它是排查底层硬件/驱动问题的第一手资料。
一、基本用法
bash
dmesg # 全部内核日志(新系统可能需 sudo)
dmesg -T # -T 把时间戳转成可读时间
dmesg -H # -H 人类可读 + 分页
dmesg | grep -i usb # 过滤 USB 相关默认时间戳是"开机后秒数",不直观;
-T转成真实时间。普通用户在新内核上可能无权读,加 sudo。配合 grep 找具体设备/错误最常用。
二、看实时与级别
bash
dmesg -w # -w 实时跟踪新内核消息(类似 tail -f)
dmesg -l err,warn # -l 只看 err/warning 级别
dmesg -f daemon # -f 按设施过滤
-w插设备时实时看内核反应(U 盘/网卡热插拔);-l err,warn直接聚焦错误,省去翻正常信息。
三、dmesg vs journalctl
| 命令 | 内容 |
|---|---|
dmesg | 仅内核环缓冲(重启可能丢失早期) |
journalctl -k | 内核日志的持久化版本(见journalctl 命令详解) |
systemd 机器上内核日志也被 journal 收集,用
journalctl -k能看更全、更持久的历史。dmesg 仍是快速看当前缓冲的快捷方式。
四、踩坑:缓冲区有限、重启丢早期
bash
# 环缓冲容量有限,最早的开机信息可能被冲掉
# 要看完整持久内核日志用 journalctl -k(journal 持久化)环形缓冲区满了会覆盖最早的消息,且重启后缓冲清空(除非配了持久化)。要长期留存用 journalctl。
五、实战:查磁盘/网卡异常
bash
dmesg -T | grep -iE 'error|fail|sd[a-z]' # 看磁盘与错误相关内核消息一句话总结
dmesg = 看内核环缓冲日志:-T 转可读时间、-w 实时跟、-l err,warn 聚焦错误;排查硬件/驱动(磁盘、网卡、USB)首选。缓冲区有限、重启可能丢早期——持久完整记录用 journalctl 的 -k。