当某些与时间相关的程序(如ntpd)在
Linux系统上运行时,内核将切换到所谓的“十一分钟模式”(参见hwclock手册页),它将自动从系统时钟更新硬件时钟十一分钟
在SLES11上,我根据经验确定,如果我将硬件时钟设置为比系统时钟晚10个小时,则11分钟模式似乎无法使硬件时钟与系统时钟匹配.但如果我将硬件时钟设置为落后系统时钟5分钟,则11分钟模式可以完美匹配.
所以显然有11分钟模式可以处理的最大更新,我想知道它是什么.
更新:
这很奇怪……
更多的实验表明,当我的硬件时钟比系统时钟晚了大约20分钟时,11分钟模式会将硬件时钟设置为落后于系统时钟30分钟(!):
# date Tue Dec 6 10:16:52 EST 2011 # hwclock --set --date "12/6/11 09:56" # # date Tue Dec 6 10:17:16 EST 2011 # hwclock --show Tue Dec 6 09:56:06 2011 -0.156551 seconds # # date Tue Dec 6 10:23:09 EST 2011 # hwclock --show Tue Dec 6 10:01:58 2011 -0.535772 seconds # # date Tue Dec 6 10:34:28 EST 2011 # hwclock --show Tue Dec 6 10:04:27 2011 -0.192025 seconds
更新:
我跑过这个:https://bugs.archlinux.org/task/27408这意味着无论好坏,当硬件时钟与系统时钟时间相差太远时,内核不会更新硬件时钟.
解决方法
从RHEL 4.6上的hwclock手册页:
This mode (we'll call it "11 minute mode") is off until something turns it on. The ntp daemon xntpd is one thing that turns it on. You can turn it off by running anything,including hwclock --hctosys,that sets the System Time the old fashioned way. To see if it is on or off,use the command adjtimex --print and look at the value of "status". If the "64" bit of this number (expressed in binary) equal to 0,11 minute mode is on. Otherwise,it is off.
所以,凭借你运行hwclock的设置 – 你可能已经将其关闭了.出于同样的原因,您可以检查adjtimex – output的输出以进行确认.