Black Friday 2025 – NPI EA (cat = Baeldung on Linux)
announcement - icon

Yes, we're now running our Black Friday Sale. All Access and Pro are 33% off until 2nd December, 2025:

>> EXPLORE ACCESS NOW

Baeldung Pro – Linux – NPI EA (cat = Baeldung on Linux)
announcement - icon

Learn through the super-clean Baeldung Pro experience:

>> Membership and Baeldung Pro.

No ads, dark-mode and 6 months free of IntelliJ Idea Ultimate to start with.

Partner – Orkes – NPI EA (tag=Kubernetes)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

1. Overview

The dmesg command is useful for displaying kernel messages. However, it displays the timestamps of the messages relative to the start of the kernel.

In this tutorial, we’ll discuss how to display the dmesg timestamps in a human-readable format.

2. The dmesg Command

dmesg is a command used for examining and controlling the kernel ring buffer. The kernel provides /dev/kmsg as an interface that presents the contents of the kernel ring buffer for user space applications. dmesg uses the stream device /dev/kmsg to display the contents of the kernel ring buffer.

If we use dmesg without any options, it prints all the messages in /dev/kmsg and exits. Let’s list the last five messages in /dev/kmsg:

$ dmesg | tail -5
[   10.533567] 18:34:04.586740 main    6.1.30 r148432 started. Verbose level = 0
[   10.534240] 18:34:04.587382 main    vbglR3GuestCtrlDetectPeekGetCancelSupport: Supported (#1)
[   12.689387] rfkill: input handler disabled
[   17.371674] rfkill: input handler enabled
[   19.303922] rfkill: input handler disabled

We filter the output of dmesg by piping its output with the tail -5 command. The timestamps at the beginning of each message within brackets show the time in seconds since the kernel started. For example, the timestamp [   19.303922] in the last message means that the input handler for rfkill was disabled about 19.3 seconds after the system started.

3. The -T Option of dmesg

Instead of timestamps relative to the start of the kernel, we may want to have conventional timestamps while examining the messages in /dev/kmsg. We use the -T option of dmesg for this purpose:

$ dmesg -T | tail -5
[Mon Mar 20 14:34:05 2023] 18:34:04.586740 main    6.1.30 r148432 started. Verbose level = 0
[Mon Mar 20 14:34:05 2023] 18:34:04.587382 main    vbglR3GuestCtrlDetectPeekGetCancelSupport: Supported (#1)
[Mon Mar 20 14:34:07 2023] rfkill: input handler disabled
[Mon Mar 20 14:34:12 2023] rfkill: input handler enabled
[Mon Mar 20 14:34:14 2023] rfkill: input handler disabled

As it’s apparent from the output, dmesg prints the timestamp of each message using absolute date and time, which is more human-readable. We can also use the –ctime option instead of the -T option. They’re the same.

4. The –time-format Option of dmesg

Another alternative for displaying the kernel messages with human-readable timestamps is the –time-format option of dmesg. This option specifies the timestamp format. We can use the iso format for obtaining a human-readable timestamp:

$ dmesg --time-format iso | tail -5
2023-03-20T14:34:05,533567+03:00 18:34:04.586740 main    6.1.30 r148432 started. Verbose level = 0
2023-03-20T14:34:05,534230+03:00 18:34:04.587382 main    vbglR3GuestCtrlDetectPeekGetCancelSupport: Supported (#1)
2023-03-20T14:34:07,689387+03:00 rfkill: input handler disabled
2023-03-20T14:34:12,371674+03:00 rfkill: input handler enabled
2023-03-20T14:34:14,303922+03:00 rfkill: input handler disabled

The iso timestamp format is YYYY-MM-DD<T>HH:MM:SS,<microseconds><-+><timezone offset from UTC>.

The ctime format, on the other hand, is another format for getting a human-readable timestamp:

$ dmesg --time-format ctime | tail -5
[Mon Mar 20 14:34:05 2023] 18:34:04.586740 main    6.1.30 r148432 started. Verbose level = 0
[Mon Mar 20 14:34:05 2023] 18:34:04.587382 main    vbglR3GuestCtrlDetectPeekGetCancelSupport: Supported (#1)
[Mon Mar 20 14:34:07 2023] rfkill: input handler disabled
[Mon Mar 20 14:34:12 2023] rfkill: input handler enabled
[Mon Mar 20 14:34:14 2023] rfkill: input handler disabled

As it’s apparent from the output, the ctime timestamp format produces the same timestamps as the -T option.

5. Conclusion

In this article, we discussed how to display the timestamps of the kernel messages in a more human-readable format.

Firstly, we learned that dmesg prints the timestamps relative to the beginning of the kernel when we use it with no options.

Secondly, we saw that the -T option is useful for producing human-readable timestamps with absolute date and time.

Finally, we learned that the iso and ctime timestamp formats of the –time-format option are other alternatives for obtaining human-readable timestamps. The ctime timestamp format produces the same timestamp as the -T option.