首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证NTP时间同步

如何验证NTP时间同步
EN

Stack Overflow用户
提问于 2012-04-06 04:23:23
回答 5查看 11.7K关注 0票数 6

我需要创建一个应用程序来验证每台机器上的NTP时间同步。换句话说,我需要确定是否每台机器都与我的LAN同步到一个公共的时间服务器(层)。到目前为止,我想出了两种方法。

1)让每台机器上的NTP客户端生成统计信息文件。如果我采用这种方法,我应该检查哪个统计文件来确定机器上的时间是否在时间服务器的容差范围内?有一个peerstats,clockstats和loopstats。这些文件中是否有我可以用来确定时间是否同步的信息?

2)调用ntpq命令行参数并通过管道传输其输出。解析输出。

现在我更喜欢选项1,但是,正如我所指出的,我不确定是否有任何NTP统计文件包含我可以用来确定时间是否同步的信息。

有没有更好的方法。

有没有可以直接查询NTP客户端的API?

谢谢你的帮助。

EN

回答 5

Stack Overflow用户

发布于 2013-03-07 09:04:41

您可以运行ntpq -c "rv 0 stratum,offset"命令并解析输出。如果返回的stratum小于16,则offset将是ntp池和系统时钟之间的时间差(以毫秒为单位)。

还有一个正在开发中的libntpq库。它还处于早期的betas阶段,但是如果你非常需要一些东西,它应该是可用的。

更新2016-10-07:看起来libntpq项目已经废弃很长时间了,但是ntp源代码中包含了一个同名的库。它看起来很有用,但很可能需要静态链接。人们应该能够容忍GPL,以便以这种方式使用它。

票数 6
EN

Stack Overflow用户

发布于 2012-04-06 04:32:38

验证同步的最好方法是实际验证它,而不是查看您正在检查其工作的守护进程生成的文件。您应该运行ntpdate -q或等效程序,并验证报告的偏移量是否在所需的任何公差范围内。

票数 1
EN

Stack Overflow用户

发布于 2012-05-02 03:33:48

我也有同样的问题。我使用了两个命令的组合: ntptime,然后解析输出,以确认没有出现单词“-p”ntpq时间,然后确认它返回一个非错误状态,以及至少一个"+“符号来指示已同步状态。

这在我的CentOS机器上工作得很好,但是在我的FreeBSD服务器上,只要本地时间稳定,ntpd正在运行,并且时间源服务器返回一致的时间,它就会返回"OK“状态,即使是几个小时的同步。我希望有一个更好的答案。如果我可以修改一些东西,让ntpdate使用ntp.conf来获取时间源服务器的列表,那么使用ntpdate的建议可能会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10035459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档