> 软件包与系统管理 > dmesg

dmesg: 查看内核环形缓冲区消息

此命令用于查看系统启动时内核输出的消息(内核环形缓冲区)。它是诊断硬件检测、驱动加载和系统错误必不可少的工具。

dmesg 是什么?

dmesg 是 'display message' 或 'driver message' 的缩写,用于输出存储在 Linux 内核环形缓冲区中的消息。它按时间顺序显示系统自启动以来硬件如何被识别、驱动程序如何加载以及发生了哪些错误。

核心功能与用途

dmesg 用于诊断系统最底层(内核)发生的事情。

  • 查看启动消息: 查看系统启动时输出的所有内核消息。
  • 硬件诊断: 检查新硬件(USB、磁盘等)连接或移除时的日志。
  • 驱动错误: 追踪驱动加载失败或内核级别错误(内核崩溃)的原因。
  • 环形缓冲区: 缓冲区大小固定,旧日志会被新日志覆盖。

主要选项 (Shell)

dmesg 通常与其他命令(grep, less)通过管道(|)结合使用,但它本身也带有一些有用的选项。

1. 输出格式和时间

2. 过滤和实时监控

3. 缓冲区/控制台控制 (需谨慎)

生成的命令:

请尝试组合命令。

描述:

`dmesg` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用场景示例 (Shell)

dmesg 经常与 grep 结合使用,以过滤出所需的信息。

查看所有消息 (分页)

dmesg | less

最基本的用法。使用 less 方便滚动查看。

实时查看新消息 (易读格式)

dmesg -wH

结合 -w (实时) 和 -H (人类可读时间)。

只过滤 USB 相关消息

dmesg | grep -i usb

grep 的 -i 选项忽略大小写。

过滤磁盘 (SATA/NVMe) 相关消息

dmesg | grep -iE 'sd[a-z]|nvme'

使用 grep -E (扩展正则表达式) 查找包含 'sd[a-z]' 或 'nvme' 的日志。

只过滤错误 (Error) 或警告 (Warn)

dmesg -H -l err,warn

使用 -l 选项指定日志级别。

只查看最近 10 行消息

dmesg | tail -n 10

结合 tail 快速查看最新消息。

包含 facility/level 标签查看

dmesg -xT | less

使用 -x 选项解码 facility/level 以帮助理解。

将日志保存到文件

dmesg -T > ~/dmesg-$(date +%F-%H%M).log

在启动后立即保存完整的 dmesg 输出。

安装

dmesg 包含在 util-linux 软件包中,并且大多数 Linux 发行版都默认提供。

默认已安装

无需单独安装。如果缺少,请安装发行版的 'util-linux' 软件包。

提示与注意事项

dmesg vs journalctl

  • systemd 环境: 在最新的 systemd 系统中,可以使用 'journalctl -k'(内核日志)或 'journalctl -b'(本次启动日志)来查看超越 dmesg 级别的集成系统日志。
  • 时间格式: dmesg 输出的默认时间是 [启动后的经过时间(秒)]。要查看实际时间,请使用 '-H' 或 '-T' 选项。
  • 缓冲区覆盖: 由于环形缓冲区的特性,旧消息可能会丢失。如果需要保留启动初期的日志,请使用 'journalctl -b 0' 查看或将 dmesg 输出保存到文件。
  • 权限/安全: 某些发行版通过 '/proc/sys/kernel/dmesg_restrict=1' 限制普通用户访问 dmesg。在这种情况下,请使用 'sudo dmesg' 或 'sudo journalctl -k'。
  • 清除日志(-c, -C): 'dmesg -c' 和 '-C' 对于调试很有用,但一旦清除,就无法恢复。在生产环境中请谨慎使用。

相关命令

功能上相似或经常一起使用的命令。



相同类别命令