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


42

我在dmesg输出中有(例如)此日志条目:

[600711.395348] do_trap: 6 callbacks suppressed

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

Answers:


59

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

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


编辑。作为伊格纳西奥的回答另一个分机,这里有一些脚本,以增强dmesg的输出在旧系统。

(注意:对于此处显示的python版本的代码,将需要替换&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"

并获取活动日期和时间。

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

Edit(2):请注意-根据以下Womble的评论-仅在未休眠计算机等情况下才有效。(在这种情况下,最好查看syslog配置/etc/*syslog*并检查适当的文件。 :dmesg vs / var / messages。)


4
而且,作为一项额外的奖励,如果计算机曾经被暂停过,那么您将完全注定要死,因为不考虑睡着的时间。
womble

Womble的评论非常重要!如果使用休眠或设置为待机状态的笔记本电脑,则会显示错误的时间。您应该使用/var/log/kern.log文件查看实际文件。
oligofren

date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
单线

注意:我无法再编辑我的评论,但是%Z应该改为UTC,因为它应该是date +%sUTC的秒数。然后必须将其转换为本地时区。
kgibm

1
@kgibm:我同意(2);至于(1),并不是说我有反对一线的东西-但我在这里实际上没有看到一点:上面的代码被故意分成三行以提高可读性(我需要人们理解它是如何实现的)起作用,而不是使其尽可能紧凑;为此,我最好按顺序构建它)和大小(我希望有更长的变量名,但这会使第3行看起来像噩梦般的东西);另一方面,您可能不会在终端中输入整行,而是将其放入文件中并使其成为可执行文件,因此在这里也不会有什么大的胜利。
ジョージ

17

为了扩展Ignacio的答案,dmesg通常还通过syslog将其中包含的条目记录在系统上的其他位置,这将为您提供“真实的”时间戳。除非Ubuntu更改了Debian设置的默认设置,否则日志条目应位于中/var/log/kern.log


1
在Cent OS 5和6上,日志条目位于/ var / log / messages中。
emerino 2015年


2

在busybox上,上面的3个底线不起作用,因此这是我一次将其计算出来的方法(1628880.0用您的dmesg时间戳替换):

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

2

dmesg | perl -pe 'use Unix::Uptime; s/^\[(.*)\]/localtime(time()-Unix::Uptime->uptime()+$1)/e'


2

我知道这已经很老了,但是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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.