如何将“dmesg”时间格式转换为“真实”时间格式

我有(例如)在dmesg输出这个日志条目:

 [600711.395348] do_trap: 6 callbacks suppressed 

当这个事件发生时,是否有可能将这个“dmesg”时间转换为“真实”时间?

    它看起来好像最近为Quantal(12.10)所实施:请参阅http://brainstorm.ubuntu.com/idea/17829/

    基本上, dmesg被报告有一个新的开关-T, --ctime


    编辑。 作为Ignacio答案的另一个扩展,下面是一些脚本来增强旧系统上的dmesg输出。

    (注意:对于那里显示的代码的python版本,人们会想要replace&lt;&gt;回到<>使其再次可用。)


    最后,像600711.395348这样的单个值可以做到

     ut=`cut -d' ' -f1 </proc/uptime` ts=`date +%s` date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T" 

    并获取事件date和时间。

    (请注意,由于四舍五入错误,最后一位数字可能不准确)。

    为了扩展Ignacio的答案, dmesg中包含的条目通常也通过系统日志logging在系统的其他位置,这会给你一个“真实”的时间戳。 除非Ubuntu已经改变了Debian-set默认值,否则日志条目应该在/var/log/kern.log

    在dmesg中给出的时间是从内核启动以来的秒数。 所以,只要在内核开始运行的时候添加那么多秒钟(提示:正常运行时间)。

    在busybox中,上面的3个class轮没有工作,所以这里是我计算一下的方法(用你的dmesg时间戳replace1628880.0 ):

     perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'