dmesg命令

半兽人 发表于: 2025-09-05   最后更新时间: 2025-09-05 10:57:59  
{{totalSubscript}} 订阅, 268 游览

dmesg 是 Linux/Unix 系统中非常常用的一个命令,全称 display message,主要作用是 查看内核环形缓冲区(kernel ring buffer)中的消息。这些消息通常是系统启动过程、硬件驱动加载、内核模块运行、错误信息、硬件检测等输出。

一、原理

  • Linux 内核在运行时会不断向一个缓冲区写入日志信息,这个缓冲区就是 内核环形缓冲区
  • 用户态的 dmesg 命令就是去读取这个缓冲区,并按顺序打印出来。
  • 这些信息和 /var/log/kern.log/var/log/messages 中的内容会有重叠(因为 syslog/rsyslog/systemd-journald 也会收集内核消息)。

二、常见用途

  1. 查看开机信息
    系统刚启动时,内核初始化硬件(CPU、内存、磁盘、网卡、驱动)都会输出信息,可以用 dmesg 来回溯。

  2. 硬件检测
    插拔 USB、加载驱动、磁盘报错时,dmesg 会显示相关日志。
    例如插入 USB 后:

    dmesg | tail
    
  3. 排查问题

    • 硬盘 I/O 错误
    • 内存 ECC 错误
    • 网络驱动报错
    • 内核 panic / oops 信息
  4. 性能调优
    比如 thermal(温度监控)、CPU 频率调节器、NUMA 配置等信息都能看到。

三、常用参数

dmesg                # 打印全部日志
dmesg | less         # 分页查看
dmesg | grep usb     # 过滤关键词
dmesg -T             # 把时间戳转换成人类可读的时间
dmesg -l err         # 只显示 error 级别日志
dmesg -w             # 实时跟踪新日志(类似 tail -f)

重点参数说明

  • -T
    默认的时间戳是 从开机到现在的秒数,加 -T 会转成人类时间(例如 2025-09-05 10:31:22)。
  • -l <level>
    日志等级(内核定义了8个级别):

    • emerg(紧急)
    • alert(警报)
    • crit(严重)
    • err(错误)
    • warn(警告)
    • notice(注意)
    • info(信息)
    • debug(调试)

四、和日志系统关系

  • dmesg 直接读内核缓冲区,不依赖 syslog。
  • /var/log/kern.logjournalctl -k 也能看内核日志,但它们是日志系统保存的。
  • dmesg 更偏向实时调试,比如插 USB、加载模块。
更新于 2025-09-05

查看Linux更多相关的文章或提一个关于Linux的问题,也可以与我们一起分享文章