如何确定 NTP 是否已更新时间

如何确定 NTP 是否已更新时间

我在 Raspberry Pi 上有一个服务,如果系统时间至少有一分钟的误差,它想知道系统时间的误差(即秒数)。当 Raspberry Pi 启动时,NTP 在我的服务启动之前就已经更新了时间。我该如何实现这个功能?

我尝试/etc/ntp.conf通过启用 statsdir 进行更新:

statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

我认为clockstats应该包含时钟更新时的记录。然而,/var/log/ntpstats/clockstats在我关闭 Raspberry Pi 5 分钟后再打开它时,我没有看到它。

答案1

我认为如果时钟偏差一分钟,NTP 实际上就会崩溃。NTP 希望将时钟精度保持在亚秒级以内。

ntpd 有一些选项允许它在启动时跳转时钟,但如果必须大幅跳转时钟,那么即使这样也无法正常工作。我相信默认的 ntp 启动脚本会在启动 ntpd 之前尝试快速设置来自其中一个 ntp 源的时间。我不得不修改我的 pi 的 ntp 启动脚本,以使用其他方法在几秒钟内设置时钟精度,以使 ntpd 启动。(具体来说,它等待 GPS 获得锁定,然后设置来自 gps 的时间,但这是一种特殊情况,因为我需要能够在没有有效的互联网连接的情况下启动 ntpd。)

您还可以使用以下命令检查系统时钟相对于各种来源的准确性ntpq -np

答案2

我正在解析系统日志中的“时间已更改”并比较时间戳:

grep "Time has been changed" \var\log\syslog -a -B1 | tail -n 2

相关内容