AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 822678
Accepted
Diomidis Spinellis
Diomidis Spinellis
Asked: 2016-12-26 12:44:20 +0800 CST2016-12-26 12:44:20 +0800 CST 2016-12-26 12:44:20 +0800 CST

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

  • 772

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

  • 如何准确设置系统时间?我知道它必须设置为 TAI 秒,而不是 UTC 秒。是否可以通过 NTP 做到这一点?目前,系统显示的时间与正确的时间相差 36 秒。
  • 2017-02-01 之后显示的时间会继续正确吗?时zoneinfo/right区文件是否需要更新?
ntp leapsecond
  • 2 2 个回答
  • 1715 Views

2 个回答

  • Voted
  1. John Mahowald
    2016-12-28T06:26:22+08:002016-12-28T06:26:22+08:00

    首先,计算机系统上的时钟必须提供 TAI 或 UTC 的概念并不完全准确。我可以通过时区获取和设置时间,例如 GNU coreutils date 命令非常灵活。在设置为 right/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 或发出 well-timeddate或chronyc settime命令。

    但是,您需要了解 TAI - UTC 偏移量以及您的源时间。NTP 时间是标准的 UTC,因此只需在 UTC 同步系统上设置“正确”区域,TAI - 10 - UTC 就会关闭,目前是 26。

    相反,一些 NTP 服务器可以提供 GPS 或 TAI。这加上一些闰秒黑客将摆脱内核或用户登陆时间同步纠正的闰秒错误。请参阅:“正确”tz 数据库 (zoneinfo) 文件和基于 GPS 的 NTP

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

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

    好时机,因为下一个闰秒是2016 年 12 月 31 日 23h 59m 60s。
    如果使用 UTC,Red Hat 发布了一份很好的总结,介绍了在 Linux 上处理它的方法。请注意,许多站点会重复、涂抹或让 NTP 修复第二个错误,而无需显示第 61 秒。 解决红帽企业 Linux 中的闰秒问题

    这一切对我来说似乎是很多工作。如果我可以让 NTP 或内核通过 Red Hat 描述的方法来处理它,我宁愿看不到第 61 秒。

    • 2
  2. Best Answer
    Diomidis Spinellis
    2017-01-02T13:42:01+08:002017-01-02T13:42:01+08:00

    时区文件可能需要更新。您可以通过运行命令来测试它以查看已安装时区文件中的转换。以下示例包含闰秒转换。

    $ zdump -c 2017,2018 -v /etc/localtime /etc/localtime -9223372036854775808 = NULL /etc/localtime -9223372036854689408 = NULL /etc/localtime Sat Dec 31 23:59:60 2016 UT = Sun Jan 1 01:59:60 2017 EET isdst=0 gmtoff=7200 /etc/localtime Sun Jan 1 00:00:00 2017 UT = Sun Jan 1 02:00:00 2017 EET isdst=0 gmtoff=7200 /etc/localtime Sun Mar 26 00:59:59 2017 UT = Sun Mar 26 02:59:59 2017 EET isdst=0 gmtoff=7200 /etc/localtime Sun Mar 26 01:00:00 2017 UT = Sun Mar 26 04:00:00 2017 EEST isdst=1 gmtoff=10800 /etc/localtime Sun Oct 29 00:59:59 2017 UT = Sun Oct 29 03:59:59 2017 EEST isdst=1 gmtoff=10800 /etc/localtime Sun Oct 29 01:00:00 2017 UT = Sun Oct 29 03:00:00 2017 EET isdst=0 gmtoff=7200 /etc/localtime 9223372036854689407 = NULL /etc/localtime 9223372036854775807 = NULL

    如果时区文件需要更新,并且您的操作系统发行版没有提供闰秒(/右)时区文件,您可以按如下方式设置时区文件。

    • 从https://www.iana.org/time-zones获取时区分布,
    • 配置和安装,以及
    • 使用如下命令设置正确的区域文件(其中还包括闰秒信息)

    sudo cptzdir/etc/zoneinfo-leaps/你的时区 /etc/localtime

    要从 NTP 服务器设置时间,您可以配置和安装 rdate (openrdate),然后运行命令,例如sudo rdate -s -c -n 0.gentoo.pool.ntp.org.

    • 0

相关问题

  • 网络时间服务器的 DHCP 选项

  • 公共 NTP 服务器

  • 时间同步和计划任务

  • 时间漂移

  • Windows Server 无法可靠地同步 NTP 时间

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve