我的 OpenBSD 主机正在运行 NTPD,但慢了 26 秒,尽管它说“时钟同步”:
user@host:~# ntpctl -sa
4/4 peers valid, clock synced, stratum 3
peer
wt tl st next poll offset delay jitter
216.239.35.0 time1.google.com
1 10 2 1063s 1078s -1.951ms 101.103ms 0.594ms
216.239.35.4 time2.google.com
* 1 10 2 481s 1067s -1.742ms 112.251ms 0.447ms
216.239.35.8 time3.google.com
1 10 2 729s 991s -1.472ms 11.454ms 0.169ms
216.239.35.12 time4.google.com
1 10 2 830s 1051s -2.203ms 268.285ms 8.564ms
Run Code Online (Sandbox Code Playgroud)
/etc/ntpd.conf
内容:
server time1.google.com
server time2.google.com
server time3.google.com
server time4.google.com
Run Code Online (Sandbox Code Playgroud)
/etc/rc.conf.local
内容:
nsd_flags=
ntpd_flags=-s …
Run Code Online (Sandbox Code Playgroud) 我最近阅读了很多关于 UNIX Time 的文章,其中大部分内容不连贯,大部分内容相互矛盾。我正在尝试协调 UNIX 时间(以下简称 UXT)、TAI 和 UTC 之间的转换,为此,我需要正确理解 UXT。问题是,我似乎找不到其他人这样做了。
以下是我通过繁琐研究从无数来源重建的最佳解释。也有哪里不对。 我正在寻找对以下内容的整体分析和逐点验证/反驳。本质上,修复以下内容以使其正常工作。
TAI 是一个单调递增的时间标准。它滴答 SI 秒,并忽略 DST 和闰秒。
UTC 与 TAI 相同,但通过整数个闰 SI 秒进行校正(转换为时间字符串将其反映为第 60 秒),以便在天文时间标准 UT1 的 0.9 SI 秒内。
UXT 是自 1970-01-01 00:00:00 UTC 以来的UNIX 秒计数。每天总是正好有 86400 秒。然而,UXT 与 UTC 相关。
这怎么可能?嗯,UNIX 秒需要与 SI 秒不同,并且因为闰秒不是完全规则的,UNIX 秒不能是一个明确定义的时间长度。
UNIX 规范第4.15 节中从 UTC 到 UXT 的转换将不同的 UTC 时间别名为相同的 UXT 时间戳,从而有效地使 UNIX 秒与 SI 秒相同(UNIX 闰秒除外,它们是两个 SI 秒)。
在实践中,实际发生的情况各不相同。大多数计算机基于远程服务器进行同步,因此它们在同步期间隐式地处理闰秒更新。
所有这一切意味着,虽然每个单独的 UXT 时间戳都可以轻松转换为 …