命令行手册

Man » dmesg 手册在线 - dmesg 手册页的详细在线文档

🌍
dmesg - 打印或控制内核环缓冲区

概要

dmesg [选项]

dmesg --clear

dmesg --read-clear [选项]

dmesg --console-level level

dmesg --console-on

dmesg --console-off

描述

dmesg 用于检查或控制内核环缓冲区。

默认操作是显示内核环缓冲区中的所有消息。

选项

--clear、--read-clear、--console-on、--console-off 和 --console-level 选项是互斥的。

-C, --clear

清除环缓冲区。

-c, --read-clear

先打印环缓冲区的内容,然后清除环缓冲区。

-D, --console-off

禁用向控制台打印消息。

-d, --show-delta

显示时间戳和消息之间的时间差。如果与 --notime 一起使用,则仅打印时间差,而不打印时间戳。

-E, --console-on

启用向控制台打印消息。

-e, --reltime

以人类可读的格式显示本地时间和时间差。请注意,转换为本地时间可能会不准确(有关更多详细信息,请参阅 -T)。

-F, --file file

从给定的文件读取 syslog 消息。请注意,-F 不支持 kmsg 格式的消息。请参阅 -K。

-f, --facility list

将输出限制为给定的(逗号分隔的)设施列表。例如:

dmesg --facility=daemon

将仅打印来自系统守护进程的消息。有关所有受支持的设施,请参阅 --help 输出。

-H, --human

启用人类可读的输出。另请参阅 --color、--reltime 和 --nopager。

-J, --json

使用 JSON 输出格式。时间输出格式仅为“sec.usec”格式,默认情况下不解码日志优先级级别(使用 --decode 以将其拆分为设施和优先级),其他控制输出格式或时间格式的选项将被静默忽略。

-K, --kmsg-file file

从给定的文件读取 /dev/kmsg 消息。不同的记录应该用 NULL 字节分隔。

-k, --kernel

打印内核消息。

-L, --color[=when]

使输出着色。可选参数 when 可以是 auto、never 或 always。如果省略 when 参数,则默认值为 auto。颜色可以被禁用;有关当前的内置默认值,请参阅 --help 输出。另请参阅下面的“颜色”部分。

-l, --level list

将输出限制为给定的(逗号分隔的)级别列表。例如:

dmesg --level=err,warn

将仅打印错误和警告消息。有关所有受支持的级别,请参阅 --help 输出。

将加号 + 附加到级别名称也会包含所有更高的级别。例如:

dmesg --level=err+

将打印级别 err、crit、alert 和 emerg。

在前面加上它将包含所有更低的级别。

-n, --console-level level

设置将消息打印到控制台的级别。级别是级别编号或级别名称的缩写。有关所有受支持的级别,请参阅 --help 输出。

-n 1 或 -n emerg 可以阻止所有消息显示在控制台上,但紧急(panic)消息除外。所有级别的消息仍然写入 /proc/kmsg,因此可以使用 syslogd(8) 来精确控制内核消息的显示位置。当使用 -n 选项时,dmesg 不会打印或清除内核环缓冲区。

--noescape
默认情况下,为了安全原因,不可打印且可能不安全的字符(例如,损坏的多字节序列、终端控制字符等)会以 \x<hex> 格式进行转义。此选项会禁用此功能。例如,它可以与 --raw 一起用于调试目的。请小心使用,不要默认使用它。

-P, --nopager
不要将输出管道传输到分页器。默认情况下,对于 --human 输出,分页器是启用的。

-p, --force-prefix
为多行消息的每一行添加设施、级别或时间戳信息。

-r, --raw
打印原始消息缓冲区,即不删除日志级别前缀,但所有不可打印的字符仍然会被转义(另请参阅 --noescape)。

请注意,实际的原始格式取决于 dmesg 读取内核消息的方式。/dev/kmsg 设备使用与 syslog(2) 不同的格式。为了保持向后兼容性,dmesg 始终以 syslog(2) 格式返回数据。可以通过,例如,使用命令 'dd if=/dev/kmsg iflag=nonblock' 从 /dev/kmsg 读取实际的原始数据。

-S, --syslog
强制 dmesg 使用 syslog(2) 内核接口来读取内核消息。默认情况下,从内核 3.5.0 开始,它使用 /dev/kmsg 而不是 syslog(2)。

-s, --buffer-size size
使用指定大小的缓冲区来查询内核环缓冲区。默认值为 16392。(最初,默认内核 syslog 缓冲区大小为 4096,从 1.3.54 开始为 8192,从 2.1.113 开始为 16384。)如果您已将内核缓冲区设置为大于默认值,则可以使用此选项来查看整个缓冲区。

-T, --ctime
打印人类可读的时间戳。

请注意,时间戳可能不准确!日志中使用的时源在系统 SUSPEND/RESUME 后不会更新。时间戳会根据启动时间和单调时钟之间的当前差异进行调整,但这仅适用于在上次恢复后打印的消息。

--since time
显示从指定时间开始的记录。支持亚秒级粒度。时间可以以绝对方式或相对方式指定(例如,“1 小时前”)。请注意,时间戳可能不准确,有关更多详细信息,请参见 --ctime。

--until time
显示到指定时间为止的记录。支持亚秒级粒度。时间可以以绝对方式或相对方式指定(例如,“1 小时前”)。请注意,时间戳可能不准确,有关更多详细信息,请参见 --ctime。

-t, --notime
不打印内核的时间戳。

--time-format format
使用给定的格式打印时间戳,该格式可以是 ctime、reltime、delta、iso 或 raw。前三个格式是特定于时间格式选项的别名。raw 格式使用默认时间戳格式,显示自启动以来的秒数。iso 格式是 dmesg 对 ISO-8601 时间戳格式的实现。此格式的目的是使在两个系统之间以及任何其他解析中比较时间戳变得容易。iso 时间戳的定义为:YYYY-MM-DD<T>HH:MM:SS,<微秒><+/-><UTC 的时区偏移量>。

ISO 格式与 ctime 具有相同的问题:当系统挂起并恢复时,时间可能不准确。

^ -time-format 可以多次使用,并带有不同的值,以输出每个指定的格式。

delta 总是紧随 ctime 或 raw 之后(如果同时指定)。

-u, --userspace
打印用户空间消息。

-w, --follow
等待新消息。此功能仅在具有可读 /dev/kmsg 的系统上受支持(自内核 3.5.0 起)。

-W, --follow-new
等待并仅打印新消息。

-x, --decode
将 facility 和 level(优先级)编号解码为人类可读的前缀。

-h, --help
显示帮助文本并退出。

-V, --version
显示版本并退出。

颜色

输出颜色化通过 terminal-colors.d(5) 功能实现。可以通过以下文件禁用隐式颜色化:

/etc/terminal-colors.d/dmesg.disable

用于 dmesg 命令,或通过以下文件禁用所有工具:

/etc/terminal-colors.d/disable

自版本 2.41 起,还支持 $NO_COLOR 环境变量,以禁用输出颜色化,除非通过命令行选项明确启用。

用户特定的 $XDG_CONFIG_HOME/terminal-colors.d 或 $HOME/.config/terminal-colors.d 会覆盖全局设置。

请注意,输出颜色化默认可能已启用,在这种情况下,terminal-colors.d 目录不必存在。

dmesg 支持的逻辑颜色名称为:

subsys
消息子系统前缀(例如“ACPI:”)。

time
消息时间戳。

timebreak
以 --reltime 或 --human 输出中的短 ctime 格式显示的消息时间戳。

alert
具有警报日志优先级的消息文本。

crit
具有严重日志优先级的消息文本。

err
具有错误日志优先级的消息文本。

warn
具有警告日志优先级的消息文本。

segfault
通知有关段错误的消息文本。

退出状态

dmesg 可能会因为权限被拒绝而失败。这通常是由 dmesg_restrict 内核设置引起的,请参阅 syslog(2) 以获取更多详细信息。

作者

Karel Zak <_>

dmesg 最初由 Theodore Ts’o <_> 编写。

参见

terminal-colors.d(5), syslogd(8)

报告错误

如需报告错误,请使用问题跟踪器 [https://github.com/util-linux/util-linux/issues]。

可用性

dmesg 命令是 util-linux 软件包的一部分,可以从 Linux 内核存档 [https://www.kernel.org/pub/linux/utils/util-linux/] 下载。