我想将 Centos 6.10 dmesg 转换为真实时间戳,我该怎么做?我尝试使用 -T,但没有成功。我有像 (1630230907.320:2) 这样的长条目
答案1
当不支持-T
和/或--ctime
标志来打印人类可读的时间戳时,您可以手动转换时间戳。
中的时间戳dmesg
是自上次重启以来的偏移量(以秒为单位),因此:
确定最后一次重启:
[root@server ~]# last -n 1 reboot reboot system boot 3.10.0-1160.76.1 Sat Aug 27 10:56 - 14:25 (29+03:28) wtmp begins Tue Nov 7 09:30:18 2017
例如我的
dmesg
有一个条目:[2316645.206965] BIOS EDD facility v0.16 2004-Jun-25, 1 devices found
然后使用
date --date "[date of last-reboot] [timestamp] seconds
转换时间戳:date --date "Sat Aug 27 10:56 2316645.206965 seconds" Fri Sep 23 06:27:37 CEST 2022
这与以下内容完全对应
dmesg -T
:[Fri Sep 23 06:27:37 2022] BIOS EDD facility v0.16 2004-Jun-25, 1 devices found
不过我认为您的时间戳由于某种原因不正确,1630230907.32 秒已经超过 50 年了。
手册页中已经给出了时间戳不正确的原因man dmesg
-T, --ctime
Print human-readable timestamps.
Be aware that the timestamp could be inaccurate! The time
source used for the logs is not updated after system
SUSPEND/RESUME. Timestamps are adjusted according to current
delta between boottime and monotonic clocks, this works only
for messages printed after last resume.
暂停/恢复事件不仅仅是笔记本电脑用户关心的事情,虚拟系统在实时迁移过程中也可能会遇到这些事件。