Linux 中的 dmesg 命令教程

dmesg 命令是“诊断消息”的简写,是一个 Linux 实用程序,用于显示在内核环形缓冲区内流动的消息。 内核环形缓冲区是系统启动时的一种日志机制,用于诊断故障设备。

设备发送的诊断消息的格式可能因设备类型而异。 消息的传统格式包含 设备类型 后跟一个冒号。 然后按照 详细信息 由设备发送。 每行是 加时间戳 自启动以来的秒数。

让我们来看看基本的输出 dmesg 命令。

dmesg 命令的基本输出

为了在终端上显示完整的未过滤输出,我们只需输入 dmesg. 建议将输出通过管道传递到 less 命令,因为输出可能包含启动时的数百行消息。

dmesg | less 
‘dmesg’ 命令的基本输出

这种与内核相关的行话对于正在寻找特定信息的程序员很有用。 例如,要获取 Linux 内核版本,我们运行:

dmesg | grep "Linux version" 
使用 ‘dmesg’ 命令的 Linux 内核版本

上图中提取的部分也存在于基本输出中 dmesg 命令,但伴随着大量其他信息,使其变得不明显。

grep command 是 Linux 中的一个搜索工具。 我们有一篇专门介绍 grep 命令的完整文章。

提取特定设备的消息

使用组合 dmesggrep 命令,我们可以轻松地从看似永无止境的输出中提取特定设备的信息。 例如,要查看与键盘设备相关的消息,我们运行:

dmesg | grep -i "Keyboard" 
Dmesg 命令键盘特定于键盘的“dmesg”输出

在上面的终端片段中,我们正在查看内核和键盘驱动程序之间交换的消息。

显示消息以及设施类型和级别

显示的消息可以分为两类:

  • 设施:负责消息的工具,如内核消息的“kern”。
  • 等级:消息的重要性级别,如“warn”表示警告。

在…的帮助下 '-x' 选项,我们可以更改输出格式,以便设施和级别可见。

dmesg -x | less 
Dmesg 命令设施级别“dmesg”输出中的设施和级别

设施的名称后跟级别的类型。 这些消息可以根据它们的类型过滤掉。

根据设施过滤消息

'-f' 或者 '--facility' 可用于过滤指定设施的消息。

dmesg -x -f <FACILITY> 
Dmesg 命令工具过滤设施型

如图所示,过滤多个设施类型时,关键字之间用逗号隔开。 我们可以通过运行来了解设施的类型 dmesg -h.

根据级别过滤消息

与之前的方法类似, '-l' 或者 '--level' 选项用于指定要显示的级别类型。

dmesg -x -l <LEVEL> 
Dmesg 命令级别过滤级别类型

我们可以使用这种方法过滤多种类型的级别。 可以通过终端通过运行访问级别列表 dmesg -h.

打印带有人类可读时间戳的消息

数字时间戳不容易解释,因此 dmesg 命令提供了一个选项来将数字时间戳切换为人类可读的时间戳。 这可以通过 '-T' 旗帜。

dmesg -T 
Dmesg 命令时间戳人类可读的时间戳

新的时间戳包括交换消息的日期和时间。 时间戳可能不准确,因为时间记录在系统暂停或挂起后不会更新。

清除 dmesg 日志

dmesg 命令提供清除存储在环形缓冲区中的日志的能力。 这 '-c' 选项用于此目的。

dmesg -C 
Dmesg 命令清除清除“dmesg”日志

由于环形缓冲区中存储的数据只是日志信息,因此删除它不会影响设备的任何功能。 这只会影响对任何工作不正常的设备执行诊断的能力。

结论

这个 Linux 诊断工具没有太多内容。 好奇的读者可以通过终端运行 man dmesg 来访问手册页。

我们希望这篇文章易于读者理解。 如有任何疑问或建议,请随时在下面发表评论。