NTP 文档说:
在一般情况下,ntpd 以小步长调整时钟,以便时间刻度有效连续且没有间断 - http://doc.ntp.org/4.1.0/ntpd.htm
然而,这根本不是我在实践中注意到的。如果我手动将系统时间向后或向前更改 5 或 10 秒然后开始ntpd
,我注意到它会一次性调整时钟。
例如,使用此代码:
#!/usr/bin/env python
import time
last = time.time()
while True:
time.sleep(1)
print time.time() - last
last = time.time()
当我第一次更改时间时,我会注意到类似以下内容:
1.00194311142 8.29711604118 1.0010509491
然后,当我启动 NTPd 时,我会看到如下内容:
1.00194311142 -8.117301941 1.0010509491
有没有办法强制ntpd
以更小的步骤进行调整?
启动守护程序时通过
ntpd -x
将保持非常小的变化:不会有时钟步进。当然,设置回转仅意味着如果您的时钟与正确时间相差很远,则可能需要一段时间来纠正较大的差距。引用手册页中的几段由于您将时钟调整了 10 秒,您肯定超出了 NTP 期望看到的范围,因此步进。
在开始主要服务之前运行
ntpdate
然后在之后运行ntpd -x
可能是一个很好的组合解决方案,以确保在需要无级计时之前发生任何主要步骤。如果这是您要编写的代码,这可能是您正在寻找的答案:https ://stackoverflow.com/questions/1205722/how-do-i-get-monotonic-time-durations-in-python