View Kernel Messages in Linux | dmesg Command
The dmesg (display message) command is used to view kernel messages from the ring buffer, providing insights into hardware detection, driver initialization, and system errors during boot and runtime.
- Displays low-level kernel and hardware messages not visible in standard logs.
- Useful for diagnosing hardware failures, driver issues, and boot problems.
- The kernel messages are stored temporarily in the ring buffer and permanently in /var/log/dmesg.
- Supports options like -T for readable timestamps and --follow to monitor live kernel events in real time.
Basic Example: View All Kernel Messages
This displays all messages from the kernel ring buffer.
Command:
sudo dmesgOutput:

Key Options of dmesg command
The following are the options of dmesg command with describing its functionality:
| Option | Description | Example Usage |
|---|---|---|
| -H | It provides the human-readable output, making timestamps and information more understandable | dmesg -H |
| -T | It shows only human-readable timestamps for each message | dmesg -T |
| -l | It filter the messages by log level (e.g., err, warn, info) | dmesg -l err |
| -k | It only prints the kernel messages (filter out userspace messages) | dmesg -k |
| -s | It specifes the buffer size to read messages | dmesg -s 1024 |
| -f | It filters the messages by facility (e.g., kern, user, daemon) | dmesg -f kern |
| -r | It takes the Raw output and do not decode syslog(2) priority to facility and level | dmesg -r |
| -x | It helps with providing the decode facility and level to human-readable prefixes (e.g., kern.info) | dmesg -x |
Syntax of the dmesg Command
dmesg [options]Installation and setup dmesg command
The following are the steps that guides in install and setup the dmesg command:
Step 1: Check if dmesg is Installed
Firstly, whether the dmesg software is already available or not using the following command:
which dmesgStep 2: Install dmesg
For Debian-based systems (Ubuntu, Mint, etc.):
sudo apt udpate
sudo apt install util-linux
For RedHat-based systems (Fedora, CentOS, etc.):
sudo yum install util-linuxStep 3: Verify dmesg Installation
After installation of dmesg command, verify its successful installation using the following command:
dmesg --versionBasic Usage and Examples of dmesg Command
The dmesg command provides detailed kernel-level information useful for diagnosing hardware, driver, and boot-related issues. Below are common examples demonstrating its basic usage and key functionalities.
1. Viewing Logs Page-Wise with Less
- Used to scroll through kernel messages conveniently, one page at a time.
Command:
sudo dmesg | lessOutput:

Here,
- Displays kernel messages page by page for easier reading.
- The less pager allows smooth scrolling through long outputs.
- Prevents terminal overflow and improves readability.
2. Colorizing dmesg Output
- Adds color to different log types for better visibility and quick identification.
Command:
sudo dmesg -LOutput:

Here,
- Highlights errors, warnings, and informational messages in different colors.
- Makes log analysis faster and visually easier.
- Ideal for distinguishing critical events at a glance.
3. Displaying Human-Friendly Timestamps
- Converts raw timestamps into seconds and nanoseconds for easier reading.
Command:
sudo dmesg -HOutput:

Here,
- Displays timestamps in an easily readable format.
- Shows precise timing of kernel messages since boot.
- Helps track system events with microsecond accuracy.
4. Displaying Standard Date and Time Format
- Shows log timestamps in a standard, human-readable date and time format.
Command:
sudo dmesg -TOutput:

Here,
- Converts timestamps into real-world date and time.
- Useful for correlating kernel messages with system or user actions.
- Slightly reduces time resolution to improve readability.
5. Monitoring Real-Time Logs
- Continuously displays new kernel messages as they are generated.
Command:
sudo dmesg --followOutput:

Explanation:
- Works like tail-f for live kernel log updates.
- Shows new events such as hardware connections or system errors in real time.
- Useful for monitoring system behavior continuously.
6. Viewing Specific Number of Messages with Head
- Displays only the first few kernel messages for a concise overview.
Command:
sudo dmesg | head -10Output:

Explanation:
- Shows the first 10 messages from the kernel log.
- Useful for reviewing early boot or initialization events.
- Helps focus on startup information only.
7. Viewing Last 10 Messages with Tail
- Shows the most recent kernel messages for quick inspection.
Command:
sudo dmesg | tail -10Output:

Explanation:
- Displays the last 10 kernel log entries.
- Helps identify recent hardware or system changes.
- Commonly used for troubleshooting after connecting devices.
8. Case-Insensitive Searching
Finds specific messages without worrying about uppercase or lowercase text.
Command:
sudo dmesg | grep -i usbOutput:

Explanation:
- Searches for messages containing “USB” or “usb”.
- Helps verify whether USB devices were detected correctly.
- Simplifies pattern-based message filtering.
9. Searching for Disk Related Messages
- Searches kernel messages related to disks or storage devices.
Command:
sudo dmesg | grep -i sdaOutput:

Explanation:
- Finds log entries related to disk drives (/dev/sda).
- Displays events like detection, mounting, or disk errors.
- Commonly used to troubleshoot hard drive or SSD issues.
10. Filtering Messages by Log Level (Info)
- Displays kernel messages based on their severity or importance level.
Command:
sudo dmesg -l infoOutput:

Explanation:
- Shows informational messages only.
- Filters logs to focus on normal system operations.
- Reduces noise from warnings or errors for clarity.
11. Combining Multiple Log Levels
- Retrieves kernel messages that match more than one log level.
Command:
sudo dmesg -l debug,noticeOutput:

Explanation:
- Displays both debug and notice-level messages.
- Helps developers track both normal and detailed system activities.
- Useful for performance monitoring and testing.
12. Combining Log Levels (err and warn)
Filters messages to show only errors and warnings for quick issue detection.
Command:
sudo dmesg --level=err,warnOutput:

Explanation:
- Shows critical system issues and warnings together.
- Simplifies troubleshooting by focusing on potential problems.
- Useful for detecting driver or kernel module errors.
13. Filtering Messages for Specific Network Interface (eth0)
- Displays messages related to a particular network interface, like eth0.
Command:
sudo dmesg | grep -i eth0Output:

Explanation:
- Filters logs for a specific network adapter.
- Shows driver loading, link status, and connection issues.
- Helps in diagnosing network-related problems.
14. Filtering Messages by Facility (daemon)
- Shows kernel messages categorized under a specific facility.
Command:
sudo dmesg -f daemonOutput:

Explanation:
- Filters logs by facility (e.g., daemon, kernel, system).
- Helps target messages from a particular source or subsystem.
- Useful for narrowing log analysis to specific components.
15. Decoding Facility and Level
Displays each log message with readable facility and severity labels.
Command:
sudo dmesg -xOutput:

Explanation:
- Adds facility and log level prefixes to each message.
- Makes it easier to identify where messages come from and their severity.
- Ideal for advanced log analysis and debugging.
Difference between syslog and dmesg
The following are the difference between syslog and dmesg:
| Feature | syslog | dmesg |
|---|---|---|
| Purpose | It is a general logging system for various system messages and events | It a command that helps in displays kernel ring buffer messages |
| Scope | Logs messages from kernel, system services, and applications | Logs only kernel messages |
| Log Files | Stores logs in files like /var/log/syslog, /var/log/messages | Does not store logs in files; displays current kernel log |
| Persistence | Logs are persistent and can be archived for long-term storage | Logs are transient and only available until next reboot |