背景:
有个本地模拟时间的插件,需要严格的时间检测,这样的话就需要保证本地和网络时间严格一致!
1、检测本地时间和网络时间相差多少
访问https://time.is/zh/,就可以看到本地时间和网络时间的差值,该网站是精确的官方原子钟时间,时间准确度较高。
2、检查本地的ntp更新
1 | > ntpq -p |
字段解释:
- remote – 用于同步的远程节点或服务器。“LOCAL”表示本机 (当没有远程服务器可用时会出现)
- refid – 远程的服务器进行同步的更高一级服务器
- st – 远程节点或服务器的 Stratum(级别,NTP 时间同步是分层的)
- t – 类型 (u: unicast(单播) 或 manycast(选播) 客户端, b: broadcast(广播) 或 multicast(多播) 客户端, l: 本地时钟, s: 对称节点(用于备份), A: 选播服务器, B: 广播服务器, M: 多播服务器, 参见“Automatic Server Discovery“)
- when – 最后一次同步到现在的时间 (默认单位为秒, “h”表示小时,“d”表示天)
- poll – 同步的频率:rfc5905建议在 NTPv4 中这个值的范围在 4 (16秒) 至 17 (36小时) 之间(即2的指数次秒),然而观察发现这个值的实际大小在一个小的多的范围内 :64 (26 )秒 至 1024 (210 )秒
- reach – 一个8位的左移移位寄存器值,用来测试能否和服务器连接,每成功连接一次它的值就会增加,以 8 进制显示
- delay – 从本地到远程节点或服务器通信的往返时间(毫秒)
- offset – 主机与远程节点或服务器时间源的时间偏移量,offset 越接近于0,主机和 NTP 服务器的时间越接近(以方均根表示,单位为毫秒)
- jitter – 与远程节点同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确
remote字段中字符的解释,包含 “ “,”x”,”-“,”#”,”+”,”*”,”o”:
1 | " " – 无状态,表示: 没有远程通信的主机"LOCAL" 即本机 或(未被使用的)高层级服务器 或 远程主机使用的这台机器作为同步服务器 |
更多字段的解释请参考:https://linux.cn/article-4664-1.html
3、配置多个ntp地址
由于Mac的时间设置页面上是不能修改地址的,需要在对应的配置文件中修改。Mac中有两个配置ntp地址的文件,/etc/ntp.conf
和/private/etc/ntp.conf
,两个文件会自动同步,修改其中一个即可。
编辑sudo vim /etc/ntp.conf
,删除原有内容,将下面的几行复制进去,保存,退出,重启电脑。这是几个已知质量较好的ntp地址,别的地址都不是很可靠,顺带也把apple的ntp地址加上吧
1 | server ntp.aliyun.com |
4、再次检查时间
电脑重启后,再次访问https://time.is/zh/,查看时间差值是否在正常范围内
5、手动更新时间
如果某天突然发现电脑时间快了或者慢了,我们仍然可以用上面的ntp地址来手动更新。如果执行一次时间仍有较大差值,可以多执行几次
1 | > sudo ntpdate -u ntp.aliyun.com |