1
hefish 2023-02-03 13:07:53 +08:00
自己写个 shell
|
2
ltkun 2023-02-03 13:09:32 +08:00 via Android
cron
|
3
adoal 2023-02-03 13:16:23 +08:00 8
ntp 的时间同步机制不是这么用的。
一般用法是在系统启动阶段 ntpdate 强行同步一次,然后启动 ntpd 在后台慢慢维护时间便宜。开着 ntpd 的时候,ntpdate 会拒绝运行。 尤其时在服务器环境里,因为有不少服务软件假设时间是平滑、单向进行的,如果在服务软件运行过程中突然发生时间跳变,尤其是回拨,软件的逻辑就会出错。所以正确的用法是 ntpd 在后台持续运行,跟上游时间源对比,如果偏移量超出阈值,就小幅度调节内核时钟的进行速度来纠偏。这个调节是平滑的,而且如果本机时间超前了也不会回拨,只会减慢进行速度。而启动阶段强行 ntpdate 同步一次的原因就是如果偏差太大,ntpd 的缓慢纠偏机制不给力,而启动时 ntpdate 会安排在大多数业务服务之前启动,这时候任何时间跳变都无所谓。 |
4
adoal 2023-02-03 13:19:05 +08:00
以上 ntpdate 和 ntpd 是举例。chrony 也可以。
另外,成熟的发行版,安装时间同步管理套件时会在启动项里配置好上面这个流程。 |
5
fengleiyidao OP @adoal
所以正确的用法是 ntpd 在后台持续运行,跟上游时间源对比,如果偏移量超出阈值,就小幅度调节内核时钟的进行速度来纠偏。这个调节是平滑的,而且如果本机时间超前了也不会回拨,只会减慢进行速度。 ----------------------- 有啥包可以做到这个么? 我是想保持本机与 npt 服务器(网线直连)时间差在 x 毫秒以内。 |
6
adoal 2023-02-03 13:53:17 +08:00 1
@fengleiyidao 不能 ntp 机制本身不能保证你提出的这个量化的硬性要求。你设想的过几秒定时运行的办法,也不能保证做到这点。
不过 ntpd/chronyd 可以通过 minpoll/maxpoll 参数来设置定时同步的周期范围。还有其它一堆参数可以慢慢调的。 要更靠谱的话得本机接一个硬件时钟源。 |
7
adoal 2023-02-03 13:56:17 +08:00
offset 、delay 、jitter 可以调调看。
|
9
kiddult 2023-02-03 17:13:48 +08:00
@fengleiyidao 局域网的误差应该默认就能达到这个级别吧?不然服务器集群都会多多少少有问题
|