我想要一个通过 NTP 从 /etc/ntp.conf 文件获取 NTP 服务器来更新日期的单行代码。特别是因为手动命令并不总是有效,由于防火墙规则,并非 /etc/ntpd.conf 中的所有服务器都可以访问。
service ntpd stop, ntpdate ntp1host, service ntpd start
这将是正常的做法。是否有命令允许我通过 NTP 强制更新时间而不关闭守护进程?
答案1
这是一个非常非常糟糕的主意。让我(尝试)解释一下。
该ntp
守护进程期望控制系统时钟。当它启动时,如果允许,它会跳过时钟,以便时间接近其远程时间服务器提供的时间。此后,它定期将系统时钟生成的本地时间与远程提供的本地时间进行比较,并更快或更慢地调整本地时钟以保持同步。
同步有两个级别:
- 与远程时间服务器相比,保持时钟准确
- 确保在较长的时间内,本地时钟能够得到充分的控制,即使没有互联网连接,它也将继续保持大致准确的时间
如果你跳动时钟,或者通过设置时钟(无论是使用ntpdate
还是手动)引入新的转换,它将扰乱#2的长期计算,并可能导致时钟纪律如此严重,以至于会明显丢失或增益与现实相比,时间很长。如果发生这种情况,唯一真正的解决方案是关闭ntp
、删除参考调整文件,然后硬重启服务器。真的。
如果您确实还想继续,您可以尝试以下操作:
ntpdate -u $(awk '$1=="server" {print $2}' /etc/ntp.conf)
但在任何情况下,我都不建议在ntp
仍在运行时使用它。
答案2
嗯...不幸的是似乎没有这样的功能。
这个维基页面(https://support.ntp.org/bin/view/Dev/DeprecatingNtpdate)关于迁移似乎没有记录这样的功能(还?)。