dmesg时间vs系统时间不正确

我希望这里有人能帮助我解决这个奇怪的问题。

我想我知道为什么会发生,但我不知道如何解决它。 也许这是因为BIOS时间设置不正确或类似的东西。 但我不想改变约400多台服务器的BIOS时间。 (或更改BIOS电池)

root@spool:~# echo TEST > /dev/kmsg root@spool:~# dmesg -T | tail -1 [Mon Feb 17 04:57:03 2014] TEST root@spool:~# date Mon Feb 17 11:45:17 CET 2014 

服务器正在运行ntp进行时间同步。

任何人都知道如何解决这个问题在操作系统?

 Linux spool 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux 

为什么在回显到/dev/kmsgdmesg消息date/时间与系统date/时间不同步?

为了validation你的理论(顺便说一下),以root身份执行以下操作:

 hwclock --show 

这将显示您在执行命令的服务器上的硬件时钟。

要使硬件时钟与系统时间(由ntppipe理)同步,请运行以下命令:

 hwclock --systohc --utc 

最后一个参数(–utc)告诉hwclock将时间存储在硬件时钟的协调一致时间中。

另外,请记住dmesg(1)的手册页如下,因此您遇到的行为是有logging的和有效的:

  -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. 

dmesg只是打印内核循环缓冲区,以启动时间为秒的正常运行时间logging消息。

所以,如果你使用-T选项,所有这些正常运行时间的值只是添加到系统启动的date。 如果你有多次睡眠暂停或恢复,他们会丢失,所以在这种情况下,T选项没有用,因为date/时间值不正确,然后回来。