ubuntu 可以每 x 秒钟与 ntp 同步一次么?

2023-02-03 13:07:17 +08:00
 fengleiyidao
具体用那个命令啊? 搜了一下出来一堆。。。。

timedatectl 、ntpdate 、ntpd 、chrony 。。
1119 次点击
所在节点    问与答
9 条回复
hefish
2023-02-03 13:07:53 +08:00
自己写个 shell
ltkun
2023-02-03 13:09:32 +08:00
cron
adoal
2023-02-03 13:16:23 +08:00
ntp 的时间同步机制不是这么用的。

一般用法是在系统启动阶段 ntpdate 强行同步一次,然后启动 ntpd 在后台慢慢维护时间便宜。开着 ntpd 的时候,ntpdate 会拒绝运行。

尤其时在服务器环境里,因为有不少服务软件假设时间是平滑、单向进行的,如果在服务软件运行过程中突然发生时间跳变,尤其是回拨,软件的逻辑就会出错。所以正确的用法是 ntpd 在后台持续运行,跟上游时间源对比,如果偏移量超出阈值,就小幅度调节内核时钟的进行速度来纠偏。这个调节是平滑的,而且如果本机时间超前了也不会回拨,只会减慢进行速度。而启动阶段强行 ntpdate 同步一次的原因就是如果偏差太大,ntpd 的缓慢纠偏机制不给力,而启动时 ntpdate 会安排在大多数业务服务之前启动,这时候任何时间跳变都无所谓。
adoal
2023-02-03 13:19:05 +08:00
以上 ntpdate 和 ntpd 是举例。chrony 也可以。

另外,成熟的发行版,安装时间同步管理套件时会在启动项里配置好上面这个流程。
fengleiyidao
2023-02-03 13:44:11 +08:00
@adoal
所以正确的用法是 ntpd 在后台持续运行,跟上游时间源对比,如果偏移量超出阈值,就小幅度调节内核时钟的进行速度来纠偏。这个调节是平滑的,而且如果本机时间超前了也不会回拨,只会减慢进行速度。
-----------------------

有啥包可以做到这个么?
我是想保持本机与 npt 服务器(网线直连)时间差在 x 毫秒以内。
adoal
2023-02-03 13:53:17 +08:00
@fengleiyidao 不能 ntp 机制本身不能保证你提出的这个量化的硬性要求。你设想的过几秒定时运行的办法,也不能保证做到这点。

不过 ntpd/chronyd 可以通过 minpoll/maxpoll 参数来设置定时同步的周期范围。还有其它一堆参数可以慢慢调的。

要更靠谱的话得本机接一个硬件时钟源。
adoal
2023-02-03 13:56:17 +08:00
offset 、delay 、jitter 可以调调看。
adoal
2023-02-03 13:57:47 +08:00
@adoal 说错了,是根据 ntpq 返回结果里的 offset 、delay 、jitter 看同步效果。
kiddult
2023-02-03 17:13:48 +08:00
@fengleiyidao 局域网的误差应该默认就能达到这个级别吧?不然服务器集群都会多多少少有问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/912855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX