dmesg 是 linux 内核环形缓冲区的日志快照,记录启动以来的硬件检测、驱动加载、设备错误等底层信息,不依赖日志服务,是排查底层问题的第一手资料。

dmesg 是 Linux 内核环形缓冲区(ring buffer)的日志快照,记录系统启动以来的内核消息,包括硬件检测、驱动加载、设备错误、内存分配、Oops 信息等。它不依赖日志服务(如 rsyslog 或 journald),是排查底层问题的第一手资料。
查看与过滤关键信息
直接运行 dmesg 会输出全部内容,通常需配合过滤使用:
-
dmesg | grep -i "error\|fail\|warn":快速定位错误、失败或警告类消息 -
dmesg | grep -A2 -B2 "usb":查找含 usb 的行,并显示前后两行上下文,便于理解设备枚举过程 -
dmesg -T:以本地可读时间(而非开机秒数)显示时间戳,更直观 -
dmesg -L:启用颜色高亮,不同级别(如 err、info)用不同颜色区分
识别硬件与驱动问题
内核启动阶段会扫描总线并加载驱动,dmesg 是验证硬件是否被正确识别的首选工具:
- 网卡未起来?查
dmesg | grep -i eth0或dmesg | grep -i "network\|rtl8169\|igb"(根据芯片型号调整关键词) - 新插入的 NVMe 盘没识别?运行
dmesg | tail -30查看最后几十行,关注nvme、pci、ata相关输出 - USB 设备反复断连?搜索
dmesg | grep -i "usb.*reset\|port.*disabled"
应对缓冲区溢出与日志丢失
内核环形缓冲区大小有限(默认通常为 64KB–1MB),旧日志可能被覆盖。遇到“想看的启动信息没了”,可尝试:
-
dmesg -c:清空缓冲区并打印当前全部内容(适合抓取刚发生的异常后立即执行) -
sudo dmesg -n 8:临时提高控制台日志级别(8=debug),让更多信息输出到终端(需配合dmesg -w实时观察) - 持久化配置:编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX中添加log_buf_len=4M,再运行sudo update-grub && sudo reboot
结合其他工具交叉验证
dmesg 提供的是内核视角,需搭配用户态工具确认问题范围:
- 看到
"memory: out of memory"?接着运行free -h和cat /proc/meminfo看实际内存使用 - 发现
"ext4: Unknown parameter 'barrier'"类挂载错误?检查/etc/fstab中对应选项是否拼写有误 - 出现
"NMI watchdog: BUG: soft lockup"?用top或pidstat -u 1查找 CPU 占用异常进程
掌握 dmesg 不需要背命令,关键是建立“现象→关键词→上下文→关联验证”的分析路径。日常运维中,它常是定位硬件兼容性、驱动冲突和早期启动故障最快的一环。











