To translate the timestamps in your dmesg into human readable timestamps, use the following perl script:
#!/usr/bin/perl $uptime = `cat /proc/uptime | awk '{print $1}';`; $boot = time() - $uptime; chomp $boot; while (<STDIN>) { if ($_ =~ /^\[([\s\d\.]+)\]/) { $time_offset = $1; } $real_time = sprintf scalar localtime($boot + $time_offset); $_ =~ s/\[[\s\d\.]+\]/\[$real_time\]/; print $_; }
e.g.
[ 9.815650] 3w-9xxx: scsi2: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
will be translated into
[Wed Mar 16 16:02:32 2011] 3w-9xxx: scsi2: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
Syntax:
dmesg | perl /root/print_time_offset.pl