Linux的dmesg命令
Linux内核是操作系统的核心,它控制着对系统资源的访问,例如CPU,I/O设备,物理内存和文件系统。在引导过程中以及系统运行时,内核会将各种消息写入内核环形缓冲区。这些消息包括有关系统操作的各种信息。
内核环形缓冲区是物理内存的一部分,用于保存内核的日志消息。它具有固定的大小,这意味着一旦缓冲区已满,较旧的日志记录将被覆盖。
dmesg
命令行用于在Linux和其他类Unix的操作系统中打印和控制内核环形缓冲区。对于检查内核启动消息和调试硬件相关的问题很有用。
在本教程中,我们将介绍dmesg
命令的基础。包括dmesg
命令语法与选项,允许非root用户读取日志消息,将输出使用管道传递到less命令分页,使用grep过滤日志消息,格式化输出,清除环形缓冲区/dmesg日志,使用日志分类和日志级别过滤输出。
dmesg
命令
dmesg
命令的语法如下:
dmesg [OPTIONS]
在不带任何选项的情况下调用时,dmesg
将所有消息从内核环形缓冲区写入到标准输出:
dmesg
默认情况下,所有用户都可以运行dmesg
命令。但是,在某些系统上,非root用户可能会限制对dmesg
的访问。在这种情况下,调用dmesg
时,您将收到如下错误消息:
dmesg: read kernel buffer failed: Operation not permitted
内核参数kernel.dmesg_restrict
指定非root用户是否可以使用dmesg
查看内核日志缓冲区的消息。要删除限制,请将其设置为零:
sudo sysctl -w kernel.dmesg_restrict=0
通常,dmesg
输出包含很多信息行,因此只能看到输出的最后一部分。要一次查看一页,请将dmesg
输出通过管道传送到less
或more
可将输出分页的命令,例如:
dmesg --color=always | less
--color=always
选项用于保留彩色输出。如果要过滤缓冲区消息,请使用grep
命令。例如,要仅查看与USB相关的消息,请键入:
dmesg | grep -i usb
dmesg
从/proc/kmsg
虚拟文件中读取内核生成的消息。该文件提供了到内核环形缓冲区的接口,并且只能由一个进程打开。如果系统上正在运行syslog
进程,并且您尝试使用cat
或less
读取文件,则命令将挂起等待syslog
进程的结束。
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
选项的信息。如果您有任何问题或反馈,请随时发表评论。
以上是 Linux的dmesg命令 的全部内容, 来源链接: utcz.com/z/507056.html