Linux内核是操作系统的核心,它控制对系统资源(例如:CPU、I/O设备、物理内存和文件系统)的访问。在引导过程中以及系统运行时,内核会将各种消息写入内核环形缓冲区。这些消息包括有关系统操作的各种信息。,内核环形缓冲区是物理内存的一部分,用于保存内核的日志消息。它具有固定的大小,这意味着一旦缓冲区已满,较旧的日志记录将被覆盖。,dmesg命令行实用程序用于在Linux和其他类似Unix的操作系统中打印和控制内核环形缓冲区。对于检查内核启动消息和调试与硬件相关的问题很有用。,在本教程中,我们将介绍dmesg命令的基础。,dmesg命令的语法如下:,登录后复制,$ dmesg
,默认情况下,所有用户都可以运行dmesg命令。但是,在某些系统上,非 root 用户可能会限制对dmesg的访问。在这种情况下,调用 dmesg 时您将收到如下错误消息:,内核参数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选项):,登录后复制,时间戳格式也可以使用–time-format选项设置,可以是ctime,reltime,delta,notime或iso。例如:要使用增量格式,你可以输入:,$ dmesg --time-format=delta
,你也可以组合两个或多个选项:,$ dmesg -H -T
,要实时观看dmesg命令的输出,请使用-w(–follow)选项:,$ dmesg --follow
,过滤 dmesg 输出。,你可以将dmesg输出限制为给定的设施和等级。dmesg支持以下类型: