Dmesg 到真实时间戳

Dmesg 到真实时间戳

我想将 Centos 6.10 dmesg 转换为真实时间戳,我该怎么做?我尝试使用 -T,但没有成功。我有像 (1630230907.320:2) 这样的长条目

答案1

当不支持-T和/或--ctime标志来打印人类可读的时间戳时,您可以手动转换时间戳。

中的时间戳dmesg是自上次重启以来的偏移量(以秒为单位),因此:

  1. 确定最后一次重启:

     [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 
    
  2. 例如我的dmesg有一个条目:

    [2316645.206965] BIOS EDD facility v0.16 2004-Jun-25, 1 devices found
    
  3. 然后使用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
    
  4. 这与以下内容完全对应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.

暂停/恢复事件不仅仅是笔记本电脑用户关心的事情,虚拟系统在实时迁移过程中也可能会遇到这些事件。

相关内容