国际访客建议访问 Primers 编程伙伴 国际版站点 > Bash 教程 > dmesg 以获得更好的体验。

# Bash 的 dmesg 命令

dmesg [OPTIONS]

!subtitle:功能

查看或控制内核消息缓冲。

!subtitle:类型

可执行文件(/usr/bin/dmesg),属于 util-linux

!subtitle:参数

  • OPTIONS 选项:

    • -C, --clear - 清空消息缓冲

    • -c, --read-clear - 显示消息后清空缓存

    • -D, --console-off - 停止向控制台(通常是串口)打印消息

    • -d, --show-delta - 显示时间戳及消息之间的时间间隔

    • -E, --console-on - 向控制台(通常是串口)打印消息

    • -e, --reltime - 以易于理解的格式打印本地时间

    • -F, --file FILE - 从 FILE 文件中读取内核消息

    • -f, --facility LIST - 仅查看 LIST 列出来源的消息,以逗号分隔

    • -H, --human - 启用人类可读输出

    • -J, --json - 以 JSON 格式输出

    • -k, --kernel - 仅显示内核消息

    • -L, --color[=WHEN] - 根据 WHEN 设置输出颜色;取值为:auto, never, always

    • -l, --level LIST - 仅查看 LIST 列出级别的消息,以逗号分隔,加号(+)同时包含更高级别;从低到高依次伪:

      • debug - 调试

      • info - 常规信息

      • notice - 重要信息

      • warn - 警告

      • err - 错误

      • crit - 严重错误

      • alert - 警报

      • emerg - 紧急

    • -n, --console-level LEVEL - 向控制台(通常是串口)打印的消息级别

    • --noescape - 停止转义不可打印字符

    • -P, --nopager - 不分页

    • -p, --force-prefix - 强制显示前缀

    • -r, --raw - 打印原始消息缓冲区

    • -S, --syslog - 通过 [syslog(2)] 接口读取内核消息

    • -s, --buffer-size SIZE - 使用大小伪 SIZE 的缓冲查询内核消息缓冲;默认为 16392

    • -T, --ctime - 显示人类可读的时间

    • --since TIME - 显示 TIME(含)以后的消息

    • --until time - 显示 TIME(不含)之前的消息

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

    • --time-format FORMAT - 使用 FORMAT 指定的格式打印时间

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

    • -w, --follow - 等待新消息

    • -W, --follow-new - 等待且仅显示新消息

    • -x, --decode - 将来源和级别的数值解析为任何可读的前缀

    • --help - 显示帮助

    • --version - 显示版本

# 示例

$ dmesg
[    0.000000] Linux version 6.8.0-87-generic (buildd@lcy02-amd64-034) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #88-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 09:28:41 UTC 2025 (Ubuntu 6.8.0-87.88-generic 6.8.12)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.8.0-87-generic root=UUID=8b2c9bcc-94f2-4cf2-a9d0-581e58f9d676 ro
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff] usable
...

# 推荐阅读

# 手册

DMESG(1)                         User Commands                        DMESG(1)

NAME
       dmesg - print or control the kernel ring buffer

SYNOPSIS
       dmesg [options]

       dmesg --clear

       dmesg --read-clear [options]

       dmesg --console-level level

       dmesg --console-on

       dmesg --console-off

DESCRIPTION
       dmesg is used to examine or control the kernel ring buffer.

       The default action is to display all messages from the kernel ring
       buffer.

OPTIONS
       The --clear, --read-clear, --console-on, --console-off, and
       --console-level options are mutually exclusive.

       -C, --clear
           Clear the ring buffer.

       -c, --read-clear
           Clear the ring buffer after first printing its contents.

       -D, --console-off
           Disable the printing of messages to the console.

       -d, --show-delta
           Display the timestamp and the time delta spent between messages. If
           used together with --notime then only the time delta without the
           timestamp is printed.

       -E, --console-on
           Enable printing messages to the console.

       -e, --reltime
           Display the local time and the delta in human-readable format. Be
           aware that conversion to the local time could be inaccurate (see -T
           for more details).

       -F, --file file
           Read the syslog messages from the given file. Note that -F does not
           support messages in kmsg format. The old syslog format is supported
           only.

       -f, --facility list
           Restrict output to the given (comma-separated) list of facilities.
           For example:

           dmesg --facility=daemon

           will print messages from system daemons only. For all supported
           facilities see the --help output.

       -H, --human
           Enable human-readable output. See also --color, --reltime and
           --nopager.

       -J, --json
           Use JSON output format. The time output format is in "sec.usec"
           format only, log priority level is not decoded by default (use
           --decode to split into facility and priority), the other options to
           control the output format or time format are silently ignored.

       -k, --kernel
           Print kernel messages.

       -L, --color[=when]
           Colorize the output. The optional argument when can be auto, never
           or always. If the when argument is omitted, it defaults to auto.
           The colors can be disabled; for the current built-in default see
           the --help output. See also the COLORS section below.

       -l, --level list
           Restrict output to the given (comma-separated) list of levels. For
           example:

           dmesg --level=err,warn

           will print error and warning messages only. For all supported
           levels see the --help output.

           Appending a plus + to a level name also includes all higher levels.
           For example:

           dmesg --level=err+

           will print levels err, crit, alert and emerg.

           Prepending it will include all lower levels.

       -n, --console-level level
           Set the level at which printing of messages is done to the console.
           The level is a level number or abbreviation of the level name. For
           all supported levels see the --help output.

           For example, -n 1 or -n emerg prevents all messages, except
           emergency (panic) messages, from appearing on the console. All
           levels of messages are still written to /proc/kmsg, so syslogd(8)
           can still be used to control exactly where kernel messages appear.
           When the -n option is used, dmesg will not print or clear the
           kernel ring buffer.

       --noescape
           The unprintable and potentially unsafe characters (e.g., broken
           multi-byte sequences, terminal controlling chars, etc.) are escaped
           in format \x<hex> for security reason by default. This option
           disables this feature at all. It’s usable for example for debugging
           purpose together with --raw. Be careful and don’t use it by
           default.

       -P, --nopager
           Do not pipe output into a pager. A pager is enabled by default for
           --human output.

       -p, --force-prefix
           Add facility, level or timestamp information to each line of a
           multi-line message.

       -r, --raw
           Print the raw message buffer, i.e., do not strip the log-level
           prefixes, but all unprintable characters are still escaped (see
           also --noescape).

           Note that the real raw format depends on the method how dmesg reads
           kernel messages. The /dev/kmsg device uses a different format than
           syslog(2). For backward compatibility, dmesg returns data always in
           the syslog(2) format. It is possible to read the real raw data from
           /dev/kmsg by, for example, the command 'dd if=/dev/kmsg
           iflag=nonblock'.

       -S, --syslog
           Force dmesg to use the syslog(2) kernel interface to read kernel
           messages. The default is to use /dev/kmsg rather than syslog(2)
           since kernel 3.5.0.

       -s, --buffer-size size
           Use a buffer of size to query the kernel ring buffer. This is 16392
           by default. (The default kernel syslog buffer size was 4096 at
           first, 8192 since 1.3.54, 16384 since 2.1.113.) If you have set the
           kernel buffer to be larger than the default, then this option can
           be used to view the entire buffer.

       -T, --ctime
           Print human-readable timestamps.

           Be aware that the timestamp could be inaccurate! The time source
           used for the logs is not updated after system SUSPEND/RESUME.
           Timestamps are adjusted according to current delta between boottime
           and monotonic clocks, this works only for messages printed after
           last resume.

       --since time
           Display record since the specified time. Supported is the subsecond
           granularity. The time is possible to specify in absolute way as
           well as by relative notation (e.g. '1 hour ago'). Be aware that the
           timestamp could be inaccurate and see --ctime for more details.

       --until time
           Display record until the specified time. Supported is the subsecond
           granularity. The time is possible to specify in absolute way as
           well as by relative notation (e.g. '1 hour ago'). Be aware that the
           timestamp could be inaccurate and see --ctime for more details.

       -t, --notime
           Do not print kernel’s timestamps.

       --time-format format
           Print timestamps using the given format, which can be ctime,
           reltime, delta or iso. The first three formats are aliases of the
           time-format-specific options. The iso format is a dmesg
           implementation of the ISO-8601 timestamp format. The purpose of
           this format is to make the comparing of timestamps between two
           systems, and any other parsing, easy. The definition of the iso
           timestamp is: YYYY-MM-DD<T>HH:MM:SS,<microseconds>←+><timezone
           offset from UTC>.

           The iso format has the same issue as ctime: the time may be
           inaccurate when a system is suspended and resumed.

       -u, --userspace
           Print userspace messages.

       -w, --follow
           Wait for new messages. This feature is supported only on systems
           with a readable /dev/kmsg (since kernel 3.5.0).

       -W, --follow-new
           Wait and print only new messages.

       -x, --decode
           Decode facility and level (priority) numbers to human-readable
           prefixes.

       -h, --help
           Display help text and exit.

       -V, --version
           Print version and exit.

COLORS
       The output colorization is implemented by terminal-colors.d(5)
       functionality. Implicit coloring can be disabled by an empty file

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

       for the dmesg command or for all tools by

          /etc/terminal-colors.d/disable

       The user-specific $XDG_CONFIG_HOME/terminal-colors.d or
       $HOME/.config/terminal-colors.d overrides the global setting.

       Note that the output colorization may be enabled by default, and in
       this case terminal-colors.d directories do not have to exist yet.

       The logical color names supported by dmesg are:

       subsys
           The message sub-system prefix (e.g., "ACPI:").

       time
           The message timestamp.

       timebreak
           The message timestamp in short ctime format in --reltime or --human
           output.

       alert
           The text of the message with the alert log priority.

       crit
           The text of the message with the critical log priority.

       err
           The text of the message with the error log priority.

       warn
           The text of the message with the warning log priority.

       segfault
           The text of the message that inform about segmentation fault.

EXIT STATUS
       dmesg can fail reporting permission denied error. This is usually
       caused by dmesg_restrict kernel setting, please see syslog(2) for more
       details.

AUTHORS
       Karel Zak <[email protected]>

       dmesg was originally written by Theodore Ts’o <[email protected]>.

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

REPORTING BUGS
       For bug reports, use the issue tracker at
       https://github.com/util-linux/util-linux/issues.

AVAILABILITY
       The dmesg command is part of the util-linux package which can be
       downloaded from Linux Kernel Archive
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.39.3                 2023-11-23                          DMESG(1)
本文 更新于: 2026-03-06 09:52:30 创建于: 2026-03-06 09:52:30