【发布时间】:2021-11-05 16:54:16
【问题描述】:
我的应用程序必须在时间同步的服务器上运行。为此,我安装了ntpd 并检查了ntpstat 的返回值。从ntpstat 获得零返回值似乎需要很长时间,尤其是在重新启动之后。为什么ntpd 需要这么长时间才能同步?如何在重启后几秒内实现同步?
【问题讨论】:
-
在启动
ntpd之前运行ntpdate <server>。这通常在ntpd的init脚本中。你的可能没有。不用说,在执行ntpdate时,网络也应该是正常的。 -
ntpd的init脚本是什么?我使用 yum 安装了它,唯一看起来像你所说的文件是/etc/ntp.conf但它没有开始和停止部分所以我不确定我需要在哪个文件中添加你建议的命令 -
Linux 的不同发行版使用不同的初始化脚本,有些甚至使用
systemd。您可以通过运行rpm -ql ntp找到初始化脚本,它将显示包拥有的所有文件。在我的 Linux 中,它是/etc/init.d/ntpd和/etc/init.d/ntpdate。如果您使用lsb脚本,chkconfig --list ntpd和chkconfig --list ntpdate将显示它们是否都设置为自动启动。如果您使用的是systemd,那么systemd -a | grep ntp将显示它们是否处于活动/非活动/启用/禁用。 -
好的,我正在使用 systemd,我在
/usr/lib/systemd/system/下找到了初始化文件如果您将您的回复写为答案,我将能够接受它(如果可行的话)。 -
仅供参考:您可以使用 ntp 引用实现中提供的
ntp-wait,而不是滚动您自己的检查时间同步的解决方案。apropos ntp-wait: ntp-wait - Wait for ntpd to stabilize the system clock。这也比您的 ntpstat 解决方案更便携,因为它不依赖于任何供应商提供的实用程序,例如ntpstat.