Ubuntu 会在年底(2016 年)自动调整到闰秒吗?

43 time

英国广播公司报道:

为了与地球的自转保持同步,新年前夜的世界时钟将增加一秒。

这是否意味着我必须做任何事情才能让我的 Ubuntu 机器与此保持同步,或者它会自动调整自己而不是一秒钟?

Kaz*_*lfe 34

如果您的 Ubuntu 机器侦听 NTP 并与 Internet 同步时间,则系统会自动根据时差自行调整。

虽然您的计算机可能不一定意识到闰秒发生的事实,但它会在 NTP 服务器在整个 Internet 上推送更改时捕获并记录该事件。

如果您觉得没有增加额外的秒数,您可以使用以下命令强制更新:

sudo ntpdate -s pool.ntp.org
Run Code Online (Sandbox Code Playgroud)

这将自动执行地理定位,为您提供附近的服务器(减少延迟错误),Ubuntu 将根据您的时区进行调整(因此,如果服务器位于不同的时区,它仍然可以)。或者,您可以使用ntp.ubuntu.com.

请注意,如果您非常不走运,则您使用的所有时间服务器都无法正确处理闰秒。这不太可能,但有可能。建议根据已知的良好来源(模拟收音机,可能是time.is)手动检查。


或者,如果您使用的是现代版本的 Ubuntu,则有一个名为timedatectl. 默认情况下,这会在启动时自动运行一次。因此,如有必要,快速重启可以强制同步。

  • 这个答案是有问题的。1.) 如果您非常不走运,您将使用的所有时间服务器都无法正确处理闰秒。这不太可能,但有可能。2.) 如果`ntpd` 正在运行,同时运行`ntpdate` 会混淆它。最好先阻止它。更好的是,根本不要运行 `ntpdate`。3.) NIST 时间服务器不需要来自 Stack Exchange 的额外流量;`ntp.ubuntu.com` 或 `pool.ntp.org` 会更好。4.) 英国实际上使用`uk.pool.ntp.org`,但`pool.ntp.org` 无论如何都会执行地理定位。 (3认同)
  • @Tim 是的,但是与美国的服务器同步具有更高的延迟 = 更高的错误率......所以它可以工作,但最终结果不如使用更近的服务器精确。 (2认同)

Dmi*_*yev 17

闰秒由 Linux 内核自动处理,无需重启或 NTP 同步即可保持实际时间。如果您查看系统日志,您会看到类似于

[263284.397894] Clock: inserting leap second 23:59:60 UTC
Run Code Online (Sandbox Code Playgroud)

由于23:59:60不是有效的 Linux 时间,您的时钟将到达00:00:00,然后退回到23:59:59。在那一秒内创建的任何对象(如文件)的日期可能不一致。

就 Linux 时间(相对于实时时间)而言,闰秒不存在:

# date -d "2016-12-31 23:59:59" +%s
1483225199
# date -d "2017-01-01 00:00:00" +%s
1483225200
Run Code Online (Sandbox Code Playgroud)

  • 我的日志似乎确实证实了这个答案。我最近跑了`dmesg | grep 'leap second'` 在我的 16.04 主机器上,它显示了 `[1153894.866672] 时钟:插入闰秒 23:59:60 UTC`。这只是在开始时使用不同的数字,也显示在我用于测试的最小 16.04 VM 上,从 `mini.iso` 安装。那个最小的系统没有运行`ntpd`,也没有[`ntp` 或`openntpd` 包](http://packages.ubuntu.com/search?searchon=contents&keywords=ntpd&mode=exactfilename&suite=xenial&arch = 任何)已安装。 (2认同)
  • @EliahKagan 当然,内核没有硬编码所有未来闰秒的列表。内核具有插入闰秒的逻辑,但必须告诉内核要插入闰秒。除了 NTP 之外,我不知道还有什么可以告诉内核插入闰秒。请注意,如果内核已被指示插入闰秒,则在不重新启动的情况下卸载 NTP 将使内核处于插入闰秒的状态。 (2认同)
  • @CarstenS 事实证明 [systemd-timesyncd(8)](http://manpages.ubuntu.com/manpages/xenial/en/man8/systemd-timesyncd.8.html) 一直在同步我的最小系统时钟。我没想到这一点,半意外发现:`grep -RPis '(?<!mou)ntp' /var/log` 显示了 [这 14 条 syslog 行](https://paste.ubuntu. com/23728105/),显示来自主机的时间同步,该主机碰巧在其名称中包含 `ntp`。事后看来,我从来不知道我拥有的神秘服务是 systemd 的一部分,这是有道理的。(顺便说一句,关于chrony的好点,我也没有检查过;不过它没有安装。) (2认同)