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

Dio*_*lis 5 ntp leapsecond

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

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

Dio*_*lis 0

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

$ 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

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

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

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