1. Home
  2. Hardware Information
  3. dmesg Command Examples and Usages

dmesg Command Examples and Usages

The dmesg (diagnostic message) is a command on most Unix-like operating systems that prints the message buffer of the kernel. The output of dmesg command typically contains the messages produced by the device drivers. The dmesg command example article let you, deep-dive, into the hidden world of the Linux startup processes. Reviewing and monitoring hardware device and driver messages from the kernel’s ring buffer with “the fault finder’s friend.” The article is the dmesg manual and some useful dmesg command examples.

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
dmesg Command Examples and Usages - Enlinux
dmesg Command Examples and Usages – Enlinux

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.

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

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.

-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.

-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 alert 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.

-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.

Note that the real raw format depends on the method how dmesg(1) reads kernel messages.
The /dev/kmsg device uses a different format than syslog(2). For backward compatibility,
dmesg(1) 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.

-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 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).

-x, --decode

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

-V, --version

Display version information and exit.

-h, --help

Display help text and exit.

COLORS

Implicit coloring can be disabled by an empty file /etc/terminal-colors.d/dmesg.disable. See terminal-colors.d(5) for more details about colorization configuration.

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 informs about a 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.

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

AVAILABILITY: The dmesg command is part of the util-linux package and is available from Linux Kernel Archive ⟨https://www.kernel.org/pub/linux/utils/util-linux/⟩.

dmesg Command Examples

When a user encounters a problem with the system, it can be convenient to write the output of dmesg to a file and then send that file by e-mail to a system administrator or other knowledgeable person for assistance. For example, the output could be redirected to a file named boot_messages using the output redirection operator (designated by a rightward facing angle bracket) as follows:

dmesg > boot_messages
dmesg | grep -i usb
cat /var/log/dmesg

By default, all users can run the dmesg command. However, on some systems, the access to dmesg may be restricted for non-root users. In this situation, when invoking dmesg you will get an error message like below:

dmesg: read kernel buffer failed: Operation not permitted

The kernel parameter kernel.dmesg_restrict specifies whether unprivileged users can use dmesg to view messages from the kernel’s log buffer. To remove the restrictions, set it to zero:

sudo sysctl -w kernel.dmesg_restrict=0

One of the most used options of dmesg is -H (–human), which enables the human-readable output. This option pipe the command output into a pager:

dmesg -H

To print human-readable timestamps use the -T (–ctime) option:

dmesg -T

And the following tells dmesg to show all serial ports (which are represented by the string tty):

dmesg | grep -i tty

The dmesg and grep combination can also be used to show how much physical memory (i.e., RAM) is available on the system:

dmesg | grep -i memory

The following command checks to confirm that the HDD(s) is running in DMA (direct memory access) mode:

dmesg | grep -i dma

The output of dmesg is maintained in the log file /var/log/dmesg, and it can thus also be easily viewed by reading that file with a text editor, such as vi or gedit, or with a command such as cat, e.g.,

cat /var/log/dmesg | less

The facility represents the process that created the message. dmesg supports the following log facilities:

  • kern – kernel messages
  • user – user-level messages
  • mail – mail system
  • daemon – system daemons
  • auth – security/authorization messages
  • syslog – internal syslogd messages
  • lpr – line printer subsystem
  • news – network news subsystem

Restrict dmesg command output to specific list of levels. The following are specific log levels supported by dmesg command. Read more about Linux command lines.

  • emerg – system is unusable
  • alert – action must be taken immediately
  • crit – critical conditions
  • err – error conditions
  • warn – warning conditions
  • notice – normal but significant condition
  • info – informational
  • debug – debug-level messages

If you want to display errors related to errors and warning.

dmesg --level=err,warn
dmesg Command Examples
dmesg Command Examples

Use ‘–follow’ option in dmesg command to view real time dmesg logs, example is shown below,

dmesg --follow
dmesg -Tx --follow

Force dmesg command to use syslog.

dmesg -S

Using the head command with dmesg command example.

dmesg | head -20

Updated on September 9, 2021

Was this article helpful?

Related Articles

Leave a Comment