Linux 内核是一个复杂的工程。从启动到运行级别 5 多用户模式,Linux 内核初始化并管理 PC 的资源,包括处理器、内存、网络、视频输出和本地存储。当内核与所有这些不同的子系统和资源一起工作时,它会记录各种高级消息,让系统管理员知道它在做什么。这些消息可以使用“dmesg” 命令。问题在于,对于未经训练的人来说,内核的输出可能看起来很复杂且难以理解。但是,在理解基础知识的情况下,“dmesg” 命令可以成为系统管理员工具集中的一个非常强大的工具。
开机
了解内核消息的最快方法是检查引导过程的前几行。要查看输出的第一页,请使用以下命令:
dmesg | less
前三行可能是关于处理器“控制组”的初始化。除非您是内核黑客,否则这些并不是那么有趣。然而,下一行非常重要。它会告诉您正在运行的 Linux 内核版本。
我的测试机上的输出如下:
Linux version 3.13.0-24-generic (buildd@roseapple) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #46-Ubuntu SMP Thu Apr 10 19:08:14 UTC 2014 (Ubuntu 3.13.0-24.46-generic 3.13.9)这告诉我,我的测试机器正在运行 Linux 内核 3.13,它是由 Ubuntu 于 2014 年 4 月 10 日编译的。
接下来的 80 到 100 行都是有关 BIOS、CPU 和内存的低级详细信息。下一个重要行是系统内存的摘要。它总是以“内存:”开头。在我的测试机上,输出是:
Memory: 1525720K/1572408K available (6507K kernel code, 641K rwdata, 2752K rodata, 872K init, 924K bss, 46688K reserved, 659400K highmem)斜杠后面的数字是 Linux 内核可访问的系统内存总量,在本例中为 1.5GB。至此,Linux 已经差不多完成了对处理器和内存的检查,很快它就会将注意力转向机器的其余部分,包括视频、USB 端口、硬盘等。
硬件检测
内核输出也是了解 Linux 如何与 PC 中的硬件交互的好方法。例如,要发现内核识别哪些硬盘,您可以在消息中搜索关键字“sda”。为此,请使用“grep“ 像这样:
dmesg | grep sda
“sda”是第一个 SATA 硬盘的名称,“sdb”是第二个 SATA 硬盘的名称,依此类推。如果在“sda”、“sdb”等下找不到磁盘,请尝试“hda”、“hdb”等。
要获取有关网卡的信息,请搜索“eth0”,例如:
dmesg | grep eth0在我的测试机器上,“eth0”相关输出的其中一行显示:
e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection这告诉我,我的以太网卡是 Intel PRO/1000(称为 e1000)。
如果插入 USB 闪存驱动器并且想要检查它是否已被内核识别以及它已分配给什么设备名称,您可以使用以下命令查看最后几条内核消息tail:
dmesg | tail -20
这-20告诉tail显示 dmesg 的最后 20 行输出。示例输出显示 USB 端口插入了 ADATA 制造的闪存驱动器,容量为 8GB,设备名称为sdd.
dmesg对于系统管理员来说可能是一个非常有用的工具。尝试一下,看看您可以了解有关您的系统的哪些信息。如果您有任何疑问,请在评论部分提问,我们将看看是否可以提供帮助。






