dmesg
命令是“诊断消息”的简写,是一个 Linux 实用程序,用于显示在内核环形缓冲区内流动的消息。 内核环形缓冲区是系统启动时的一种日志机制,用于诊断故障设备。
设备发送的诊断消息的格式可能因设备类型而异。 消息的传统格式包含 设备类型 后跟一个冒号。 然后按照 详细信息 由设备发送。 每行是 加时间戳 自启动以来的秒数。
让我们来看看基本的输出 dmesg
命令。
dmesg 命令的基本输出
为了在终端上显示完整的未过滤输出,我们只需输入 dmesg
. 建议将输出通过管道传递到 less 命令,因为输出可能包含启动时的数百行消息。
dmesg | less
这种与内核相关的行话对于正在寻找特定信息的程序员很有用。 例如,要获取 Linux 内核版本,我们运行:
dmesg | grep "Linux version"
上图中提取的部分也存在于基本输出中 dmesg
命令,但伴随着大量其他信息,使其变得不明显。
这 grep
command 是 Linux 中的一个搜索工具。 我们有一篇专门介绍 grep 命令的完整文章。
提取特定设备的消息
使用组合 dmesg
和 grep
命令,我们可以轻松地从看似永无止境的输出中提取特定设备的信息。 例如,要查看与键盘设备相关的消息,我们运行:
dmesg | grep -i "Keyboard"

在上面的终端片段中,我们正在查看内核和键盘驱动程序之间交换的消息。
显示消息以及设施类型和级别
显示的消息可以分为两类:
- 设施:负责消息的工具,如内核消息的“kern”。
- 等级:消息的重要性级别,如“warn”表示警告。
在…的帮助下 '-x'
选项,我们可以更改输出格式,以便设施和级别可见。
dmesg -x | less

设施的名称后跟级别的类型。 这些消息可以根据它们的类型过滤掉。
根据设施过滤消息
这 '-f'
或者 '--facility'
可用于过滤指定设施的消息。
dmesg -x -f <FACILITY>

如图所示,过滤多个设施类型时,关键字之间用逗号隔开。 我们可以通过运行来了解设施的类型 dmesg -h
.
根据级别过滤消息
与之前的方法类似, '-l'
或者 '--level'
选项用于指定要显示的级别类型。
dmesg -x -l <LEVEL>

我们可以使用这种方法过滤多种类型的级别。 可以通过终端通过运行访问级别列表 dmesg -h
.
打印带有人类可读时间戳的消息
数字时间戳不容易解释,因此 dmesg
命令提供了一个选项来将数字时间戳切换为人类可读的时间戳。 这可以通过 '-T'
旗帜。
dmesg -T

新的时间戳包括交换消息的日期和时间。 时间戳可能不准确,因为时间记录在系统暂停或挂起后不会更新。
清除 dmesg 日志
这 dmesg
命令提供清除存储在环形缓冲区中的日志的能力。 这 '-c'
选项用于此目的。
dmesg -C

由于环形缓冲区中存储的数据只是日志信息,因此删除它不会影响设备的任何功能。 这只会影响对任何工作不正常的设备执行诊断的能力。
结论
这个 Linux 诊断工具没有太多内容。 好奇的读者可以通过终端运行 man dmesg 来访问手册页。
我们希望这篇文章易于读者理解。 如有任何疑问或建议,请随时在下面发表评论。