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