我在dmesg
输出中有(例如)此日志条目:
[600711.395348] do_trap: 6 callbacks suppressed
当此事件发生时,是否有可能将此“ dmesg”时间转换为“实际”时间?
我在dmesg
输出中有(例如)此日志条目:
[600711.395348] do_trap: 6 callbacks suppressed
当此事件发生时,是否有可能将此“ dmesg”时间转换为“实际”时间?
Answers:
好像它是最近为Quantal(12.10)实施的:请参阅http://brainstorm.ubuntu.com/idea/17829/。
基本上,dmesg
据报道有一个新的开关-T, --ctime
。
编辑。作为伊格纳西奥的回答另一个分机,这里有一些脚本,以增强dmesg的输出在旧系统。
(注意:对于此处显示的python版本的代码,将需要替换<
并>
返回<>
使其再次可用。)
最后,对于像这样的单个值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"
并获取活动日期和时间。
(请注意,由于四舍五入错误,最后两位数字可能不正确。)
Edit(2):请注意-根据以下Womble的评论-仅在未休眠计算机等情况下才有效。(在这种情况下,最好查看syslog
配置/etc/*syslog*
并检查适当的文件。 :dmesg vs / var / messages。)
date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
%Z
应该改为UTC
,因为它应该是date +%s
UTC的秒数。然后必须将其转换为本地时区。
为了扩展Ignacio的答案,dmesg
通常还通过syslog将其中包含的条目记录在系统上的其他位置,这将为您提供“真实的”时间戳。除非Ubuntu更改了Debian设置的默认设置,否则日志条目应位于中/var/log/kern.log
。
自内核启动以来,dmesg中给出的时间以秒为单位。因此,只需在内核开始运行时多花几秒钟的时间(提示:正常运行时间)。
我知道这已经很老了,但是dmesg现在有一个内置的-e或--reatime选项来显示本地时间。
root@bbs:/var/log# dmesg|tail -1
[50755952.379177] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB
root@bbs:/var/log# dmesg -e|tail -1
[Feb20 17:10] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB