Linux 如何使ntpd在重新启动后立即同步?

Linux 如何使ntpd在重新启动后立即同步?,linux,ntp,Linux,Ntp,我的应用程序必须在时间同步的服务器上运行。为此,我安装了ntpd,并检查ntpstat的返回值。从ntpstat获取零返回值似乎需要很长时间,尤其是在重新启动后。为什么ntpd要花这么长的时间才能同步,我怎样才能在重新启动后几秒钟进行同步?要在重新启动后立即同步ntp,ntpdate必须在ntpd之前运行 要在systemd中执行此操作,可以运行 systemctl-a | grep ntp 查看是否已启用ntpdate。要启用它,只需运行 systemctl启用ntpdate 对于使用lsb脚

我的应用程序必须在时间同步的服务器上运行。为此,我安装了
ntpd
,并检查
ntpstat
的返回值。从
ntpstat
获取零返回值似乎需要很长时间,尤其是在重新启动后。为什么
ntpd
要花这么长的时间才能同步,我怎样才能在重新启动后几秒钟进行同步?

要在重新启动后立即同步
ntp
ntpdate
必须在
ntpd
之前运行

要在systemd中执行此操作,可以运行

systemctl-a | grep ntp

查看是否已启用ntpdate。要启用它,只需运行

systemctl启用ntpdate

对于使用
lsb
脚本的Linux,可以通过
chkconfig
启用
ntpdate


chkconfig ntpdate on

是,正如发现的那样-启动脚本调用ntpd.service,它等待运行
ntpdate.service
。 虽然ntpdate不是服务,而是应用程序—它通过位于
/usr/libexec/ntpdate wrapper
的尼斯包装脚本运行一次,该脚本正在检查条件,其中一个条件—如果有服务器,请参见
/etc/ntp/step tickers
。如果是-它使用这些服务器调用ntpdate,fedora安装程序默认将其设置为0.fedoratime.smth.ininternet,这不适合封闭环境

因此有3种选择: 1.修改ntpdate包装器,他将首先查找
ntp.conf
2.修改
/etc/ntp/step tickers
以拥有自己的ntp服务器 3.修改
ntpdate.service
以不调用包装器,而只调用命令并在其配置中添加/替换行:

[Service]
Type=oneshot
ExecStart=/usr/bin/ntpd -q -g -x
RemainAfterExit=yes

在启动
ntpd
之前运行
ntpdate
。这通常在
ntpd
init
脚本中。有可能你的没有。不用说,当执行
ntpdate
时,网络也应该启动。
ntpd
init
脚本是什么?我使用yum安装了它,唯一一个看起来像您所说的文件是
/etc/ntp.conf
,但它没有开始和停止部分,所以我不确定需要在哪个文件中添加您建议的命令不同的Linux发行版使用不同的init脚本,有些甚至使用
systemd
。您可以通过运行
rpm-ql ntp
找到init脚本,它将显示包拥有的所有文件。在我的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/
下找到了init文件。我仍然不确定具体如何操作,但我理解您的答案,我知道应该在哪里添加它。如果你把你的回答写成一个答案,我将能够接受它(如果它有效的话)。仅供参考:与其滚动你自己的检查时间同步的解决方案,你只需使用ntp参考实现中提供的
ntp wait
apropos ntp wait:ntp wait-等待ntpd稳定系统时钟
。这也比您的ntpstat解决方案更具可移植性,因为它不依赖任何供应商提供的UTIL,如
ntpstat。
请参阅我对相关问题的回答,这样您似乎不需要运行
ntpdate
,而只需确保在引导后运行ntpd.service即可。我会接受你的回答,因为它有助于找到这个问题的根本原因。现在我有了问题的完整答案,让我首先说,确实需要调用
ntpdate
问题是
ntpd
用于同步的服务器和
ntpdate.service
/usr/libexec/ntpdate wrapper
)的用途不同。因此,如果在
/etc/ntp.conf
中更改服务器,还需要更改
/etc/ntp/step tickers
中的服务器。