4

Linux dmesg 命令

 1 year ago
source link: https://www.myfreax.com/dmesg-command-in-linux/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
log

Linux dmesg 命令

Linux 内核是操作系统的核心,它控制着对系统资源的访问,例如 CPU,I/O 设备,物理内存和文件系统

Updated At 29 Jan 2023 5 min read
By myfreax
Linux dmesg 命令

Linux dmesg 命令

Linux 内核是操作系统的核心,它控制着对系统资源的访问,例如 CPU,I/O 设备,物理内存和文件系统。

引导过程中以及系统运行时,内核会将各种消息写入内核环形缓冲区。这些消息包括系统操作的各种信息。

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

dmesg 命令是用于在 Linux / Unix 的操作系统中查看和控制内核环形缓冲区。对于检查内核启动消息和调试硬件相关的问题很有用。

在本教程中,我们将说明 dmesg 命令的基础。包括dmesg命令语法与选项,允许非root用户读取日志消息。

dmesg 命令

dmesg命令的语法形式是 dmesg [OPTIONS]OPTIONSdmesg 命令的选项,可选参数。

在指定任何选项运行 dmesg 命时,dmesg 命令将所有消息从内核环形缓冲区写到标准输出,也就是终端屏幕。

默认情况下,所有用户都可以运行 dmesg 命令。但是,在某些系统上,非 root 用户可能会限制对 dmesg 命令的访问。

在这种情况下,调用 dmesg 时,您将看到错误消息 dmesg: read kernel buffer failed: Operation not permitted。

dmesg
dmesg: read kernel buffer failed: Operation not permitted

内核参数 kernel.dmesg_restrict 指定非 root 用户是否可以运行 dmesg 命令查看内核日志缓冲区的消息。

要禁用或者删除此限制,请将其设置为零。运行命令 sudo sysctl -w kernel.dmesg_restrict=0

sudo sysctl -w kernel.dmesg_restrict=0

通常,dmesg 命令输出包含许多信息记录,因此只能看到输出的最后一部分。要一次查看一页。

请将 dmesg 命令的标准输出通过管道传送到 lessmore 命令可分页查看 dmesg 命令打印的消息。运行命令 dmesg --color=always | less

dmesg --color=always | less

--color=always 选项用于保留颜色的输出。如果要过滤缓冲区消息,请使用 grep 命令对日志消息进行过滤。

例如,要仅查看与USB相关的消息,请运行命令 dmesg | grep -i usb

dmesg | grep -i usb

dmesg 命令从 /proc/kmsg 虚拟文件中读取内核生成的消息。该文件提供了到内核环形缓冲区的接口,并且只能由一个进程打开。

如果系统上正在运行 syslog 进程,并且您尝试使用 catless 命令读取文件,则命令将挂起等待 syslog 进程的结束。

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

cat /var/log/dmesg

dmesg 格式化输出

dmesg 命令提供了许多选项,可帮助您格式化和过滤输出。dmesg 命令中最常用的选项之一是 -H / --humandmesg 命令将以友好的阅读格式进行输出。

-H / --human 选项还将 dmesg 命令的输出通过管道传递到一个分页器。要打印可读格式的时间戳,请使用-T / --ctime选项。

dmesg -H
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 命令的输出,请使用 -w / --follow 选项,例如命令 dmesg -H -T --follow

dmesg --time-format=delta
dmesg -H -T

dmesg -H -T --follow

dmesg 日志分类与级别

您可以将 dmesg 命令输出限制为指定的分类和等级。 dmesg 命令支持分类消息包括。

kern 内核消息。user 用户级消息。mail 邮件系统。daemon 系统守护程序。auth 安全/授权消息。

syslog 内部 syslogd 消息。lpr 行式打印机子系统。news 网络新闻子系统。

dmesg 命令的 -f / --facility <list> 项允许您将输出限制为指定的分类。该选项接受一个或多个逗号分隔的分类。

例如,要仅打印内核和系统守护程序消息,可以运行命令 dmesg -f kern,daemon

dmesg -f kern,daemon

每条日志消息都与消息重要性的日志级别相关联。 dmesg 命令支持的日志级别包括。

emerg 系统无法使用,alert 必须立即采取措施,crit 紧急情况,err 错误消息。

warn 警告条件。notice 正常但重要的条件。info 信息性。debug 调试级消息。

dmesg 命令的 -l / --level <list> 选项将输出限制为指定级别。该选项接受一个或多个逗号分隔的级别类型。

例如仅显示错误和严重消息,请运行命令 dmesg -l err,crit

dmesg -l err,crit

清除环形缓冲区

只有 roo t或具有 sudo 权限的用户才能清除缓冲区。要在清除之前缓冲区的内容,请使用 -c / --read-clear 选项。

如果要在清除文件之前将当前日志保存到文件中,请将 dmesg 命令的输出重定向到文件。

dmesg > dmesg_messages

sudo dmesg -C

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

在终端中输入man dmesg,获取所有可用于 dmesg 选项的信息。如果您有任何问题或反馈,请随时发表评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK