DMESG(1)
โจ DMESG(1) โจ
okay bestie, gather round, because dmesg is one of those commands that looks scary and is actually just the kernel's group chat that you're allowed to scroll ๐
it lives in the User Commands section of the manual, and it is the way to peek at the kernel ring buffer. no cap.
๐ฆ 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 ๐
So like. dmesg is used to examine or control the kernel ring buffer. that's the whole vibe. it's the kernel's little diary of everything it's been yapping about โ hardware, drivers, errors, all of it ๐ซถ
and the default action? literally just display all messages from the kernel ring buffer. no flags, no drama, just receipts.
โจ OPTIONS โจ
first things first, bestie, a boundary: the --clear, --read-clear, --console-on, --console-off, and --console-level options are mutually exclusive. pick one. it's giving "you can't sit with all of us." ๐
-C,--clearโ Clear the ring buffer. bye bye messages ๐งน-c,--read-clearโ Clear the ring buffer after first printing its contents. read it, then wipe it.-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,--filefile โ Read the syslog messages from the given file. Note that-Fdoes not support messages in kmsg format. See-Kinstead.-f,--facilitylist โ 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,--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-filefile โ Read the/dev/kmsgmessages 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 beauto,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,--levellist โ 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-levellevel โ 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 -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.
okay so this one is lowkey dangerous, bestie. the escaping exists for a security reason. do not just leave it on. ๐ โโ๏ธ
-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 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โ Forcedmesgto use thesyslog(2)kernel interface to read kernel messages. The default is to use/dev/kmsgrather thansyslog(2)since kernel3.5.0.-s,--buffer-sizesize โ Use a buffer of size to query the kernel ring buffer. This is16392by default. (The default kernel syslog buffer size was4096at first,8192since1.3.54,16384since2.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. ๐ญ
--sincetime โ 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.--untiltime โ 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-formatformat โ Print timestamps using the given format, which can bectime,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 iso format has the same issue as ctime: the time may be inaccurate when a system is suspended and resumed.
--time-format may be used multiple times with different values for format to output each specified format.
The delta always follows ctime or raw if 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 kernel3.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--reltimeor--humanoutput.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.
so if it's giving "permission denied" energy, that's usually the dmesg_restrict kernel setting being a hater. not your fault, bestie. ๐
๐ AUTHORS ๐
Karel Zak <kzak@redhat.com>
dmesg was originally written by Theodore Ts'o <tytso@athena.mit.edu>.
๐ฆ SEE ALSO ๐ฆ
terminal-colors.d(5), syslogd(8)
๐ REPORTING BUGS ๐
For bug reports, use the issue tracker <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/>.
okay that's the whole page, you ate that ๐ this lil' rewrite is chillin' with util-linux 2.42.4, dated 2026-09-21, and yes that's the DMESG(1) manual page, periodt. go read your kernel's group chat, bestie ๐
๐ฆ where this page comes from
- arch rolling: util-linux 2.42.4-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause-UC AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND ISC AND LGPL-2.1-or-later AND LicenseRef-PublicDomain
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms