ntp – 如何配置Unix系统在TAI时间运行?

我想配置一个在International Atomic Time(TAI)上运行的Unix系统,以便能够看到2016-12-31 23:59:60正确报告的年终闰秒.我知道这会导致系统的时间戳与POSIX的时间戳不兼容,但我这样做是为了实验.我已经将时区文件从/usr/share / zoneinfo / right /复制到/ etc / localtime.这些是我的问题.

>我如何准确设置系统的时间?我知道它必须设置为TAI秒,而不是UTC秒.是否可以通过NTP完成此操作?目前,系统显示与正确时间相差36秒的时间.
>在2017-02-01之后显示的时间是否会继续正确?是否需要更新zoneinfo / right timezone文件?

最佳答案
首先,必须提供计算机系统上的时钟TAI或UTC的概念并不严格准确.我可以通过时区获取和设置时间,例如GNU coreutils date命令非常灵活.在设置为右/ UTC的系统上(稍后将详细介绍):

# date -s "Tue Dec 27 08:16:53 CST 2016"
Tue Dec 27 14:16:53 UTC 2016

有关所涉及的实际数据结构,请参阅ESR的论文Time, Clock, and Calendar Programming In C,以及一些很好的参考资料.

您仍然可以像往常一样配置ntp,ptp或发出正确定时日期或chronyc settime命令.

但是,您需要了解TAI-UTC偏移量以及源时间. NTP时间是标准的UTC,因此仅在UTC同步系统上设置“右”区域将由TAI-10-UTC关闭,目前为26.

相反,一些NTP服务器可以提供GPS或TAI.加上一些闰秒黑客将摆脱由内核或用户的陆地时间同步纠正的闰秒错误.
见:“right” tz database (zoneinfo) files and GPS-based NTP

请注意,第二天86401是非标准的,并且违反了POSIX所谓的要求.如果设置执行此操作的NTP服务器,则无法为其他系统提供时间.它还可能导致依赖于特定格式化时间的应用程序的奇怪行为.

TZ数据需要更新,每年两次会赶上闰秒.如果您因此而修补闰秒,则需要再次执行此操作. (由于各种原因,您很可能需要更频繁地更新其他软件.)将会有额外的闰秒,地球的旋转变化是物理必需品.由于技术原因较少,可能的时区和夏令时变化也存在政治上的必要性.

好时机,下一个闰秒是2016 December 31, 23h 59m 60s.
如果使用UTC,红帽公布了在Linux上处理它的方法的一个很好的总结.请注意,许多网站重复,涂抹,或让NTP修复第二个错误,而不需要显示第61秒.
Resolve Leap Second Issues in Red Hat Enterprise Linux

这对我来说似乎都很重要.我宁愿不看第61秒,如果我可以通过Red Hat描述的方法让NTP或内核处理它.

转载注明原文:ntp – 如何配置Unix系统在TAI时间运行? - 代码日志