FreeBSD 对闰秒的支持
最后更新于
最后更新于
原文:
闰秒是每年在特定时刻对 UTC 进行的一秒钟调整,用以将原子时间与地球自转的变化同步。本文介绍了 FreeBSD 如何处理闰秒。
截至本文写作时,下一个闰秒将在 2015 年 6 月 30 日 23:59:60 UTC 发生。这个闰秒将在北美、南美和亚太地区的工作日内发生。
闰秒由 在 中宣布。
标准的闰秒行为介绍见 。也请参考 。
处理闰秒的最简单方法是使用 FreeBSD 默认的 POSIX 时间规则,结合 。当 运行时,且系统时间与正确处理闰秒的上游 NTP 服务器同步,闰秒将导致系统时间自动重复当天的最后一秒。无需其他调整。
如果上游 NTP 服务器没有正确处理闰秒, 会在上游服务器注意到并自行调整后,将系统时间调整一秒。
如果没有使用 NTP,在闰秒过去后需要手动调整系统时钟。
闰秒是在全球范围内同一时刻插入的:UTC 午夜。在日本是上午,在太平洋地区是中午,在美洲是傍晚,而在欧洲是晚上。
我们相信并期望,FreeBSD 在提供正确且稳定的 NTP 服务时,会在这次闰秒时正常工作,就像之前的闰秒一样。
然而,我们要提醒的是,几乎没有应用程序曾经向内核询问过关于闰秒的信息。我们的经验是,按照设计,闰秒本质上是对闰秒前一秒的重播,而这对大多数应用程序开发人员来说是一个意外。
其他操作系统和其他计算机可能会或不会像 FreeBSD 一样处理闰秒,没有正确和稳定的 NTP 服务的系统根本无法了解闰秒。
计算机因闰秒而崩溃并非罕见,经验表明,许多公共 NTP 服务器可能会错误地处理并宣布闰秒。
请尽量确保闰秒事件不会造成严重问题。
可以测试是否会使用闰秒。由于 NTP 的性质,测试可能在闰秒前最多 24 小时内有效。一些主要的参考时钟源只会在事件发生前一小时宣布闰秒。查询 NTP 守护进程:
包含 leap_add_sec
的输出表示正确支持闰秒。在闰秒前的 24 小时内或闰秒过后,将显示 leap_none
。
实际上,闰秒通常不会在 FreeBSD 上造成问题。我们希望这篇概述能帮助澄清预期情况,并确保闰秒事件的顺利进行。