dmesg1
Print or control the kernel ring buffer
Usage
dmesg [options]
dmesg --clear
dmesg --read-clear
[options]
dmesg --console-level
level
dmesg --console-on
dmesg --console-off
Overview
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
--notimethen 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
-Tfor more details).
-
-F, --file file -
Read the syslog messages from the given file. Note that
-Fdoes not support messages in kmsg format. See-Kinstead.
-
-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
--helpoutput.
-
-H, --human -
Enable human-readable output. See also
--color,--reltimeand--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
--decodeto split into facility and priority), the other options to control the output format or time format are silently ignored.
-
-K, --kmsg-file file -
Read the /dev/kmsg messages from the given file. Different record as expected to be separated by a NULL byte.
-
-k, --kernel -
Print kernel messages.
-
-L, --color[=when] -
Colorize the output. The optional argument when can be
auto,neveroralways. If the when argument is omitted, it defaults toauto. The colors can be disabled; for the current built-in default see the--helpoutput. 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
--helpoutput.Appending a plus + to a level name also includes all higher levels. For example:
dmesg --level=err+
will print levels
err,crit,alertandemerg.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
--helpoutput.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
-noption is used,dmesgwill 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
--humanoutput.
-
-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
dmesgreads kernel messages. The /dev/kmsg device uses a different format than syslog(2). For backward compatibility,dmesgreturns 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, --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
timesource 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
--ctimefor 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
--ctimefor 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,isoorraw. The first three formats are aliases of the time-format-specific options. Therawformat uses the default timestamp format showing seconds since boot. Theisoformat is admesgimplementation 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 theisotimestamp is: YYYY-MM-DD<T>HH:MM:SS,<microseconds>←+><timezone offset from UTC>.The
isoformat has the same issue asctime: the time may be inaccurate when a system is suspended and resumed.--time-formatmay be used multiple times with different values for format to output each specified format.The
deltaalways followsctimeorrawif specified together.
-
-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 -
Display 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
Since version 2.41, the $NO_COLOR environment variable is also supported to disable output colorization unless explicitly enabled by a command-line option.
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.
Releases
10 releases since Debian 5.0 (Lenny); the text changed 9 times.
--buffer-size since Debian 7 (Wheezy);
--clear since Debian 7 (Wheezy);
--color since Debian 8 (Jessie);
--console-level since Debian 7 (Wheezy);
--console-off since Debian 7 (Wheezy);
--console-on since Debian 7 (Wheezy);
--ctime since Debian 7 (Wheezy);
--decode since Debian 7 (Wheezy);
--facility since Debian 7 (Wheezy);
--file since Debian 8 (Jessie);
--follow since Debian 8 (Jessie);
--follow-new since Debian 11 (Bullseye);
--force-prefix since Debian 10 (Buster);
--help since Debian 7 (Wheezy);
--human since Debian 8 (Jessie);
--json since Debian 12 (Bookworm);
--kernel since Debian 7 (Wheezy);
--kmsg-file since Debian 13 (Trixie);
--level since Debian 7 (Wheezy);
--noescape since Debian 11 (Bullseye);
--nopager since Debian 8 (Jessie);
--notime since Debian 7 (Wheezy);
--raw since Debian 7 (Wheezy);
--read-clear since Debian 7 (Wheezy);
--reltime since Debian 8 (Jessie);
--show-delta since Debian 7 (Wheezy);
--since since Debian 12 (Bookworm);
--syslog since Debian 8 (Jessie);
--time-format since Debian 8 (Jessie);
--until since Debian 12 (Bookworm);
--userspace since Debian 7 (Wheezy);
--version since Debian 7 (Wheezy);
-C since Debian 7 (Wheezy);
-D since Debian 7 (Wheezy);
-E since Debian 7 (Wheezy);
-F since Debian 8 (Jessie);
-H since Debian 8 (Jessie);
-J since Debian 12 (Bookworm);
-K since Debian 13 (Trixie);
-L since Debian 8 (Jessie);
-P since Debian 8 (Jessie);
-S since Debian 8 (Jessie);
-T since Debian 7 (Wheezy);
-V since Debian 7 (Wheezy);
-W since Debian 11 (Bullseye);
-d since Debian 7 (Wheezy);
-e since Debian 8 (Jessie);
-f since Debian 7 (Wheezy);
-h since Debian 7 (Wheezy);
-k since Debian 7 (Wheezy);
-l since Debian 7 (Wheezy);
-n since Debian 7 (Wheezy);
-p since Debian 10 (Buster);
-r since Debian 6.0 (Squeeze);
-s since Debian 7 (Wheezy);
-t since Debian 7 (Wheezy);
-u since Debian 7 (Wheezy);
-w since Debian 8 (Jessie);
-x since Debian 7 (Wheezy).