≡菜单

在Unix和Linux中使用dmesg命令进行故障排除

在系统启动过程中,内核被加载到内存中并控制整个系统。

系统启动时,它将在屏幕上打印一些消息,以显示有关内核在引导过程中检测到的硬件设备的信息。

这些消息在内核环形缓冲区中可用,并且每当新消息到来时,旧消息就会被覆盖。您可以在系统启动后使用 dmesg命令 .

1.查看启动消息

通过执行dmesg命令,您可以查看在启动过程中检测到的硬件及其’的配置详细信息。 dmesg中显示了很多有用的信息。只需逐行浏览它们并尝试了解其含义。一旦了解了所显示的消息类型,当遇到问题时,它可能会有助于故障排除。

# dmesg | more
Bluetooth: L2CAP ver 2.8
eth0: no IPv6 routers present
bnx2: eth0 NIC Copper  链接  is Down
usb 1-5.2: USB disconnect, address 5
bnx2: eth0 NIC Copper  链接  is Up, 100 Mbps full duplex

如前所述,您还可以查看 使用dmidecode的硬件信息.

2.查看可用的系统内存

您还可以从dmesg消息中查看可用内存,如下所示。

# dmesg | grep Memory
Memory: 57703772k/60817408k available (2011k kernel code, 1004928k reserved, 915k data, 208k init)

3.查看以太网链接状态(上/下)

在下面的示例中,dmesg指示引导本身期间eth0链接处于活动状态。

# dmesg  | grep eth
eth0: Broadcom NetXtreme II BCM5709 1000Base-T (C0) PCI Express found at mem 96000000, IRQ 169, node addr e4:1f:13:62:ff:58
eth1: Broadcom NetXtreme II BCM5709 1000Base-T (C0) PCI Express found at mem 98000000, IRQ 114, node addr e4:1f:13:62:ff:5a
eth0:  链接  up

4.更改/ boot / config-文件中的dmesg缓冲区大小

Linux允许您更改dmesg缓冲区的默认大小。可以更改/boot/config-2.6.18-194.el5文件(或系统上的类似文件)中的CONFIG_LOG_BUF_SHIFT参数,以修改dmesg缓冲区。

下面的值是2的幂。因此,此示例中的缓冲区大小为262144字节。您可以根据需要修改缓冲区大小(SUSE / REDHAT)。

#  grep CONFIG_LOG_BUF_SHIFT  /boot/config-`uname -r`
CONFIG_LOG_BUF_SHIFT=18

5.清除dmesg缓冲区中的消息

有时,您可能希望在下次重新启动之前清除dmesg消息。您可以如下所示清除dmesg缓冲区。

# dmesg -c

# dmesg 

6. dmesg时间戳:dmesg中每个引导消息的日期和时间

默认情况下,dmesg don’没有与之相关的时间戳。但是,Linux提供了一种在/var/log/kern.log文件中的dmesg中查看每个引导消息的日期和时间的方法,如下所示。

应该启用klogd服务并将其正确配置为将消息记录在/var/log/kern.log文件中。

# dmesg | grep "L2 cache" 
[    0.014681] CPU: L2 cache: 2048K

# grep "L2 cache" kern.log.1
Oct 18 23:55:40 ubuntu kernel: [    0.014681] CPU: L2 cache: 2048K

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 6 评论 … 加一 }

  • 来自火星的人 2010年10月26日,上午7:43

    和往常一样非常好而且清晰!
    在我看来,Dmesg一直是所有Linux操作系统的第一个诊断工具。
    可以通过CLI实用工具通过多种方式轻松检查和修复系统。那’这就是为什么我这么喜欢GNU / Linux的原因:尽管可能会出现问题,但总有随时可用的正确工具。

  • 匿名 2010年10月26日,下午12:12

    >>Linux允许您更改dmesg缓冲区的默认大小。
    >>CONFIG_LOG_BUF_SHIFT参数在
    >>/boot/config-2.6.18-194.el5文件(或系统上的类似文件)
    >>可以更改以修改dmesg缓冲区。

    不建议这样做,除非打算重新编译内核。仅更改此文件中的值不会单独更改dmesg。除非我缺少某些内容,否则仅在重新编译内核时使用配置文件。

    每次更新或替换现有的Distro内核时,例如使用apt-get,aptitude或Synaptic(例如Debian)(我使用的Distro),该行/编号都可能会被替换。

    来自我的Debian“/boot/config-2.6.32-5-amd64”:

    “#
    #自动生成的make config:don’t edit
    #Linux内核版本:2.6.32
    #2010年10月19日星期二23:25:26
    #”

  • 里克·斯坦利 2010年10月26日,下午12:13

    >>Linux允许您更改dmesg缓冲区的默认大小。
    >>CONFIG_LOG_BUF_SHIFT参数在
    >>/boot/config-2.6.18-194.el5文件(或系统上的类似文件)
    >>可以更改以修改dmesg缓冲区。

    不建议这样做,除非打算重新编译内核。仅更改此文件中的值不会单独更改dmesg。除非我缺少某些内容,否则仅在重新编译内核时使用配置文件。

    每次更新或替换现有的Distro内核时,例如使用apt-get,aptitude或Synaptic(例如Debian)(我使用的Distro),该行/编号都可能会被替换。

    来自我的Debian“/boot/config-2.6.32-5-amd64”:

    “#
    #自动生成的make config:don’t edit
    #Linux内核版本:2.6.32
    #2010年10月19日星期二23:25:26
    #”

  • 鲍勃 2012年4月2日,上午7:32

    可能想要指定“dmesg” means “daemon message”这样人们以后就可以轻松调用该命令了。

  • 本杰明 2013年7月16日,上午3:41

    正如Rick所说,我认为内核配置文件仅显示编译内核之前选择的配置。

  • 沙爹草 2017年1月17日,上午1:29

    “Kernel”, “Kernel Module” and “Kernel Parameter”,请您对此进行解释。手段是否相同?请给点想法。

发表评论