我有(例如)在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<
和>
回到<>
使其再次可用。)
最后,像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");'