and get the event date and time in the local time zone.
( Please note that due to round-off errors the last second digit probably won't be accurate. ) .
Edit(2): Please note that -- as per Womble's comment below, -- this will only work if the machine was not hibernated etc. ( In that case, one shall better look at syslog configs at /etc/*syslog* and check the appropriate files. See also: dmesg vs /var/messages . )
To extend on Ignacio's answer, the entries contained in dmesg are typically also logged elsewhere on the system, via syslog, which will give you a "real" timestamp. Unless Ubuntu have changed the Debian-set default, the log entries should be in /var/log/kern.log.
It looks as if it was implemented recently for Quantal (12.10) : see http://brainstorm.ubuntu.com/idea/17829/ .
Basically,
dmesg
is reported to have a new switch-T, --ctime
.Edit. As another extension on Ignacio's answer, here are some scripts to enhance dmesg output on older systems.
( Note: for the python version of the code shown there, one will want to replace
<
and>
back to<>
to make it usable again. )Finally, for a single value like
600711.395348
one could doand get the event date and time in the local time zone.
( Please note that due to round-off errors the last second digit probably won't be accurate. ) .
Edit(2): Please note that -- as per Womble's comment below, -- this will only work if the machine was not hibernated etc. ( In that case, one shall better look at
syslog
configs at/etc/*syslog*
and check the appropriate files. See also: dmesg vs /var/messages . )To extend on Ignacio's answer, the entries contained in
dmesg
are typically also logged elsewhere on the system, via syslog, which will give you a "real" timestamp. Unless Ubuntu have changed the Debian-set default, the log entries should be in/var/log/kern.log
.The time given in dmesg is in seconds since kernel startup. So, just add that many seconds to when the kernel started running (hint: uptime).
I know this is now old but dmesg now has a built in -e or --reatime option to display the time in the local time.
On busybox, the 3 liner above didn't work, so here is my way to calculate it one off (replace
1628880.0
with yourdmesg
timestamp):dmesg | perl -pe 'use Unix::Uptime; s/^\[(.*)\]/localtime(time()-Unix::Uptime->uptime()+$1)/e'