dmesg(display message/driver message)是Linux系统中内核环形缓冲区的查看工具,用于显示内核运行时产生的关键消息。这些消息是系统底层运作的“第一手资料”,涵盖硬件初始化、驱动加载、系统启动过程及运行时错误等内容,是诊断硬件故障、驱动问题及内核异常的核心工具。
| 选项 | 作用 | 示例 |
|---|---|---|
| 无参数 | 显示所有内核日志(信息量大,建议配合分页工具) | `dmesg |
-T |
显示人类可读的时间戳(转换为本地时间) | dmesg -T |
-l <级别> |
按日志级别过滤(如err,warn显示错误和警告) |
dmesg -l err,warn |
-w |
实时监控新日志(类似“tail -f”) | dmesg -w |
-c |
清空内核环形缓冲区(需root权限) | sudo dmesg -c |
-k |
仅显示内核日志(默认选项,可省略) | dmesg -k |
-x |
解码设施和级别(将数字转换为可读字符串) | dmesg -x |
注:部分选项(如
-c)需要root权限,可使用sudo执行。
识别关键信息:
[ 0.000000]为系统启动时间,-T选项可转换为易读格式),用于定位事件发生时刻;KERN_EMERG(紧急)、KERN_ALERT(警报)、KERN_CRIT(严重)、KERN_ERR(错误)、KERN_WARNING(警告)、KERN_NOTICE(通知)、KERN_INFO(信息)、KERN_DEBUG(调试)。级别越高,问题越严重;e1000e为Intel网卡驱动)、设备关键词(如usb、sda为硬盘),用于定位具体硬件或驱动;筛选关键日志:
使用grep命令过滤特定关键词,快速聚焦问题:
dmesg | grep -i usb;dmesg | grep -i error;dmesg | grep -i eth0(替换为实际网卡名)。dmesg -w实时监控;或查看最新日志dmesg | tail -20;break),进入临时shell;dmesg | less查看内核“死”之前的最后几条错误日志(如“ata1: softreset failed (device not ready)”表示硬盘初始化失败)。modprobe加载驱动(如modprobe e1000e),然后运行dmesg | tail;dmesg | grep -i memory或dmesg | grep -i "out of memory";dmesg > kernel.log);/var/log/syslog(Ubuntu)或/var/log/messages(CentOS)等系统日志,全面了解用户空间应用程序的问题;dmesg -c)、设置日志级别(dmesg -n)等操作需要root权限;dmesg -w时,可配合grep过滤特定关键词(如dmesg -w | grep -i eth0),避免无关信息干扰。