Linux dmesg 命令实用示例

LinuxBeginner
立即练习

介绍

在本实验中,你将学习 Linux 的 dmesg 命令,并了解如何使用它来探索内核环形缓冲区(kernel ring buffer)。dmesg 命令是一个强大的系统监控和管理工具,它提供了对内核级消息的访问权限,这些消息可用于故障排除和监控系统健康状况。

你将首先了解 dmesg 命令的用途和用法,它允许你查看内核环形缓冲区的内容。这个环形缓冲区存储了 Linux 内核在系统启动和运行期间生成的消息,包括硬件初始化、驱动程序加载和系统事件的信息。然后,你将探索各种选项来过滤和分析 dmesg 的输出,使你能够专注于特定类型的消息或日志级别。

Linux 命令速查表

了解 dmesg 命令的用途和用法

在这一步中,你将学习 Linux 中 dmesg 命令的用途和用法。dmesg 命令用于查看内核环形缓冲区(kernel ring buffer),该缓冲区包含 Linux 内核在系统启动和运行期间生成的消息。

内核环形缓冲区是一个循环缓冲区,用于存储内核级别的消息,包括硬件初始化、驱动程序加载和系统事件的信息。dmesg 命令允许你访问和分析这些消息,这对于排查系统问题和监控系统健康状况非常有用。

要查看内核环形缓冲区的内容,请运行以下命令:

sudo dmesg

示例输出:

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 5.15.0-58-generic (buildd@lgw01-amd64-054) (gcc-11) #64~20.04.1-Ubuntu SMP Thu Jan 5 12:11:15 UTC 2023 (Ubuntu 5.15.0-58.64~20.04.1-generic 5.15.52)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-58-generic root=UUID=0b1d7f41-a4a6-4c7e-9e2f-5d8d6d7d3b2e ro quiet splash
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai

输出显示了各种内核级别的消息,包括内核版本、命令行参数和支持的 CPU 架构信息。

你可以使用 dmesg 命令的各种选项来过滤和格式化输出,例如:

  • dmesg -T:以人类可读的格式显示时间戳。
  • dmesg -l <level>:按日志级别过滤输出(例如,dmesg -l err 仅显示错误消息)。
  • dmesg -n <level>:设置控制台日志级别,决定控制台上显示的消息的最低级别。
  • dmesg -w:实时跟踪内核环形缓冲区,类似于 tail -f

了解 dmesg 命令的用途和用法对于 Linux 中的系统监控和故障排除至关重要。

使用 dmesg 探索内核环形缓冲区

在这一步中,你将学习如何使用 dmesg 命令及其各种选项来探索内核环形缓冲区(kernel ring buffer)。

首先,让我们查看内核环形缓冲区的完整内容:

sudo dmesg

这将显示内核环形缓冲区中存储的所有消息,包括启动时和运行时的消息。

接下来,让我们过滤输出以仅显示最新的消息:

sudo dmesg -T | tail

-T 选项以人类可读的格式显示时间戳,而 tail 显示输出的最后 10 行。

你还可以按日志级别过滤输出。例如,仅显示错误消息:

sudo dmesg -l err

-l 选项允许你按日志级别过滤输出,其中 err 表示错误消息。

要实时持续监控内核环形缓冲区,请使用 -w 选项:

sudo dmesg -w

这将使 dmesg 命令持续运行,并在新消息添加到内核环形缓冲区时显示它们。

示例输出:

[  +0.000000] Linux version 5.15.0-58-generic (buildd@lgw01-amd64-054) (gcc-11) #64~20.04.1-Ubuntu SMP Thu Jan 5 12:11:15 UTC 2023 (Ubuntu 5.15.0-58.64~20.04.1-generic 5.15.52)
[  +0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-58-generic root=UUID=0b1d7f41-a4a6-4c7e-9e2f-5d8d6d7d3b2e ro quiet splash
[  +0.000000] KERNEL supported cpus:
[  +0.000000]   Intel GenuineIntel
[  +0.000000]   AMD AuthenticAMD
[  +0.000000]   Hygon HygonGenuine
[  +0.000000]   Centaur CentaurHauls
[  +0.000000]   zhaoxin   Shanghai

通过探索 dmesg 命令的不同选项,你可以有效地分析内核环形缓冲区,并收集用于系统监控和故障排除的有价值信息。

过滤和分析 dmesg 输出

在这最后一步中,你将学习如何过滤和分析 dmesg 命令的输出,以提取用于系统监控和故障排除的有用信息。

首先,让我们过滤 dmesg 输出以仅显示最新的消息:

sudo dmesg -T | tail

这将显示内核环形缓冲区中的最后 10 条消息,并附带人类可读的时间戳。

接下来,让我们在 dmesg 输出中搜索特定关键词。例如,查找与网络接口相关的任何消息:

sudo dmesg | grep -i network

-i 选项使搜索不区分大小写,因此它将匹配 "network" 和 "Network"。

你还可以按日志级别和严重性过滤输出。例如,仅显示警告和错误消息:

sudo dmesg -l warn,err

这将仅显示内核环形缓冲区中的警告和错误消息。

要获取内核启动过程的摘要,可以使用以下命令:

sudo dmesg | grep -E 'Linux version|Command line'

这将显示内核版本信息以及用于启动系统的命令行参数。

最后,让我们将 dmesg 输出保存到文件中以便进一步分析:

sudo dmesg > dmesg_output.txt

然后,你可以使用文本编辑器或其他工具查看 dmesg_output.txt 文件的内容。

通过掌握这些过滤和分析技术,你可以有效地使用 dmesg 命令来监控 Linux 系统并排查各种问题。

总结

在本实验中,你学习了 Linux 中 dmesg 命令的用途和用法。dmesg 命令用于查看内核环形缓冲区(kernel ring buffer),该缓冲区包含 Linux 内核在系统启动和运行期间生成的消息。你探索了如何使用 dmesg 命令访问和分析这些内核级别的消息,这对于排查系统问题和监控系统健康状况非常有用。你还学习了各种过滤和格式化 dmesg 输出的选项,例如显示时间戳、按日志级别过滤以及设置控制台日志级别。

Linux 命令速查表