How to deal with dmesg timestamps

By default dmesg command print kernel ring buffer using timestamp for each logged message. It is easy to change this behavior and display date/time in human readable form using just one additional parameter but sometimes it is not supported so I will shortly touch upon this topic.

$ dmesg
[...]
[    1.028871] Linux agpgart interface v0.103
[    1.028940] agpgart-intel 0000:00:00.0: Intel Sandybridge Chipset
[    1.028999] agpgart-intel 0000:00:00.0: detected gtt size: 2097152K total, 262144K mappable
[    1.029857] agpgart-intel 0000:00:00.0: detected 65536K stolen memory
[...]

How to convert timestamps to human readable form?

The easiest way is to use -T or --ctime parameter.

$ dmesg -T
[...]
[Sat Oct 19 12:43:26 2013] Linux agpgart interface v0.103
[Sat Oct 19 12:43:26 2013] agpgart-intel 0000:00:00.0: Intel Sandybridge Chipset
[Sat Oct 19 12:43:26 2013] agpgart-intel 0000:00:00.0: detected gtt size: 2097152K total, 262144K mappable
[Sat Oct 19 12:43:26 2013] agpgart-intel 0000:00:00.0: detected 65536K stolen memory
[...]

What if above-mentioned parameters are not supported?

Sometimes you will encounter linux distribution in which such conversion is not supported but it can be easily implemented using the following shell script.

#!/bin/bash
# Translate dmesg timestamps to human readable format

# desired date format
date_format="%a %b %d %T %Y"

# uptime in seconds
uptime=$(cut -d " " -f 1 /proc/uptime)

# run only if timestamps are enabled
if [ "Y" = "$(cat /sys/module/printk/parameters/time)" ]; then
  dmesg | sed "s/^\[[ ]*\?\([0-9.]*\)\] \(.*\)/\\1 \\2/" | while read timestamp message; do
    printf "[%s] %s\n" "$(date --date "now - $uptime seconds + $timestamp seconds" +"${date_format}")" "$message"
  done
else
  echo "Timestamps are disabled (/sys/module/printk/parameters/time)"
fi

What if timestamps are missing?

Rarely you will find that timestamps are missing from the dmesg output.

$ dmesg
[...]
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
[...]

Read /sys/module/printk/parameters/time file to confirm that timestamps are disabled.

$ cat /sys/module/printk/parameters/time
N

To enable logging timestamps write Y to the above-mentioned file.

$ echo Y | sudo tee /sys/module/printk/parameters/time
This change will not be permanent as it will last until reboot. To make it permanent add printk.time=1 parameter to grub options.

Log test message and verify dmesg output to check out changes.

$ echo "Enabled timestamps" | sudo tee /dev/kmsg
$ dmesg
[...]
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
[...]
[271309.434405] Enabled timestamps
[...]
0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
How to enable Proxy Settings for Yum Command on RHEL / CentOS Servers
Viewed 741 times since Thu, Jul 19, 2018
6 rsync Examples to Exclude Multiple Files and Directories using exclude-from
Viewed 494 times since Wed, Oct 31, 2018
INSTALACJA MIB SNMP W SYSTEMIE CENTOS/RHEL 6
Viewed 578 times since Fri, Nov 30, 2018
Enabling automatic updates in Centos 7 and RHEL 7
Viewed 532 times since Wed, Oct 17, 2018
RHEL: Multipathing basics
Viewed 1132 times since Sat, Jun 2, 2018
RHEL: iSCSI target/initiator configuration on RHEL7
Viewed 1272 times since Sat, Jun 2, 2018
10 nmap Commands Every Sysadmin Should Know
Viewed 570 times since Wed, May 22, 2019
LOGROTATE – ARCHIWIAZACJA LOGÓW
Viewed 474 times since Fri, Nov 30, 2018
Linux – How to check the exit status of several piped commands
Viewed 1151 times since Wed, Jul 25, 2018
10 Linux DIG Command Examples for DNS Lookup
Viewed 395 times since Sun, Sep 30, 2018