Linux中的Dmesg命令

Linux内核是操作系统的核心,它控制对系统资源(例如CPU,I / O设备,物理内存和文件系统)的访问。 在引导过程中以及系统运行时,内核会将各种消息写入内核环形缓冲区。 这些消息包括有关系统操作的各种信息。

内核环形缓冲区是物理内存的一部分,用于保存内核的日志消息。 它具有固定的大小,这意味着一旦缓冲区已满,较旧的日志记录将被覆盖。

dmesg 命令行实用程序用于在Linux和其他类似Unix的操作系统中打印和控制内核环形缓冲区。 这对于检查内核启动消息和调试与硬件相关的问题很有用。

在本教程中,我们将介绍 dmesg 命令。

使用 dmesg 命令#

的语法 dmesg 命令如下:

dmesg [OPTIONS]

不带任何选项调用时 dmesg 将所有消息从内核环形缓冲区写入标准输出:

dmesg

默认情况下,所有用户都可以运行 dmesg 命令。 但是,在某些系统上, dmesg 可能仅限非root用户使用。 在这种情况下,当调用 dmesg 您将收到如下错误消息:

dmesg: read kernel buffer failed: Operation not permitted

内核参数 kernel.dmesg_restrict 指定非特权用户是否可以使用 dmesg 查看来自内核日志缓冲区的消息。 要删除限制,请将其设置为零:

sudo sysctl -w kernel.dmesg_restrict=0

通常,输出包含很多信息行,因此仅输出的最后一部分是可见的。 要一次查看一页,请将输出通过管道传递到寻呼机实用程序,例如 less 要么 more

dmesg --color=always | less

--color=always 用于保留彩色输出。

如果要过滤缓冲消息,请使用 grep 。 例如,要仅查看与USB相关的消息,请键入:

dmesg | grep -i usb

dmesg 从内核读取由内核生成的消息 /proc/kmsg 虚拟文件。 该文件提供了到内核环形缓冲区的接口,并且只能由一个进程打开。 如果 syslog 进程正在您的系统上运行,并且您尝试使用 cat , 要么 less,命令将挂起。

syslog 守护程序将内核消息转储到 /var/log/dmesg,因此您也可以使用该日志文件:

cat /var/log/dmesg

格式化 dmesg 输出编号

dmesg 该命令提供了许多选项,可帮助您格式化和过滤输出。

最常用的选项之一 dmesg-H--human),从而使人类可读的输出。 此选项将命令输出通过管道传递到寻呼机:

dmesg -H

要打印人类可读的时间戳,请使用 -T--ctime) 选项:

dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

时间戳格式也可以使用 --time-format <format> 选项,可以是ctime,reltime,delta,notime或iso。 例如,要使用增量格式,请输入:

dmesg --time-format=delta

您还可以组合两个或更多选项:

dmesg -H -T

观看输出 dmesg 实时使用命令 -w--follow) 选项:

dmesg --follow

筛选 dmesg 输出编号

您可以限制 dmesg 输出到给定的设施和级别。

该功能代表创建消息的过程。 dmesg 支持以下日志功能:

  • kern -内核消息
  • user -用户级别的消息
  • mail -邮件系统
  • daemon -系统守护程序
  • auth -安全/授权消息
  • syslog -内部syslogd消息
  • lpr -行式打印机子系统
  • news -网络新闻子系统

-f--facility <list>)选项可让您将输出限制为特定的设施。 该选件接受一个或多个逗号分隔的功能。

例如,要仅显示内核和系统守护程序消息,可以使用:

dmesg -f kern,daemon

每个日志消息都与一个显示消息重要性的日志级别相关联。 dmesg 支持以下日志级别:

  • emerg -系统无法使用
  • alert -必须立即采取行动
  • crit -关键条件
  • err -错误条件
  • warn -警告条件
  • notice -正常但状况明显
  • info -信息性的
  • debug -调试级别的消息

-l--level <list>)选项将输出限制为定义的级别。 该选项接受一个或多个逗号分隔的级别。

以下命令仅显示错误和严重消息:

dmesg -l err,crit

清除环形缓冲区#

-C--clear)选项可让您清除环形缓冲区:

sudo dmesg -C

只有root或具有sudo特权的用户才能清除缓冲区。

要在清除之前打印缓冲区内容,请使用 -c--read-clear) 选项:

sudo dmesg -c

如果要保存当前 dmesg 在清除文件之前先登录,然后将输出重定向到文件:

dmesg > dmesg_messages

结论#

dmesg 命令允许您查看和控制内核环形缓冲区。 对内核或硬件问题进行故障排除时,此功能非常有用。

类型 man dmesg 在您的终端中获取有关所有可用信息的信息 dmesg 选项。

如果您有任何疑问或反馈,请随时发表评论。

dmesg内核终端

Sidebar