我有操作系统为 Ubuntu 20.04 的 ntp 服务器
2023 年 4 月 27 日,埃及将实行新的夏令时
我尝试使用“timedatectl”命令检查 dst 状态,但不幸的是它没有在命令输出中显示 dst 配置状态。
我已将时区配置为“africa/cairo”此外,在 ntp.conf 文件中,我将参考链接配置为“http://africa.pool.ntp.org/join.html”服务器 0.africa.pool.ntp.org 服务器 1.africa.pool.ntp.org 服务器 2.africa.pool.ntp.org 服务器 3.africa.pool.ntp.org
我需要以下方面的支持:
- 如何在 ubuntu 中检查 DST 状态,因为它未显示在“datetimectl”命令输出中。
- ubuntu 20.04 中是否已更新,以在 4 月 27 日自动更改开罗时区的时间。
- NTP ubuntu 服务器是否会自动更改时间或者我必须执行手动操作。
谢谢
答案1
首先,NTP 与时区无关。NTP 上的所有时间计算均在世界标准时间。因此,选择来自非洲的池不会改变任何东西,除了您的系统使用的 NTP 服务器。所有 NTP 服务器都返回“通用时间”,而不是任何类型的“本地时间”。
除非没有其他方法可以自动同步时钟,否则您永远都不应该手动更新系统时钟。除此之外,由于夏令时或时区变化而手动更改时钟是绝对错误的!
时区数据库会定期更新,只要您保持系统处于受支持的版本并通过命令apt
(或自动)更新,Ubuntu 就会自行更新。
通过在我完全更新的(22.10)系统上使用以下命令:
$ timedatectl list-timezones | grep -i -e egypt -e cairo
Africa/Cairo
Egypt
$ zdump -v Egypt
Egypt -9223372036854775808 = NULL
Egypt -9223372036854689408 = NULL
Egypt Sun Sep 30 21:54:50 1900 UT = Sun Sep 30 23:59:59 1900 LMT isdst=0 gmtoff=7509
[...]
Egypt Thu Jul 31 21:59:59 2014 UT = Thu Jul 31 23:59:59 2014 EET isdst=0 gmtoff=7200
Egypt Thu Jul 31 22:00:00 2014 UT = Fri Aug 1 01:00:00 2014 EEST isdst=1 gmtoff=10800
Egypt Thu Sep 25 20:59:59 2014 UT = Thu Sep 25 23:59:59 2014 EEST isdst=1 gmtoff=10800
Egypt Thu Sep 25 21:00:00 2014 UT = Thu Sep 25 23:00:00 2014 EET isdst=0 gmtoff=7200
Egypt 9223372036854689407 = NULL
Egypt 9223372036854775807 = NULL
$ diff <(zdump -v Africa/Cairo | cut -d' ' -f2- ) <(zdump -v Egypt | cut -d' ' -f2- )
我注意到埃及(或非洲/开罗)时区的最后一次 DST 变化发生在 2014 年,并且我的系统上当前版本的时区信息数据库中没有针对埃及设置的 DST 变化。
最后一条命令显示Africa/Cairo
和Egypt
实际上是相同的时区。
作为替代方案,我写了 Perl 脚本这将检查过去和未来几年的 DST 日期。您也可以在系统上使用该脚本测试当前或选定的时区,以确保万无一失:
$ TZ=Egypt ./dstcheck.pl
Testing seconds from 733276801 to 2200000000...
1993/03/28 Sun 02:00:01 [1993/03/28 Sun 00:00:01 UTC] +2 - Seconds: 733276801
1993/05/01 Sat 02:00:01 [1993/04/30 Fri 23:00:01 UTC] +3 - Seconds: 736210801
1993/10/01 Fri 02:00:01 [1993/10/01 Fri 00:00:01 UTC] +2 - Seconds: 749433601
[...]
2014/06/26 Thu 23:00:01 [2014/06/26 Thu 21:00:01 UTC] +2 - Seconds: 1403816401
2014/08/01 Fri 01:00:01 [2014/07/31 Thu 22:00:01 UTC] +3 - Seconds: 1406844001
2014/09/25 Thu 23:00:01 [2014/09/25 Thu 21:00:01 UTC] +2 - Seconds: 1411678801
如果你不幸生活在一个政府做出“愚蠢”决定的国家(对不起,我用这个词!)如此短的时间内改变夏令时,您可以尝试自己更新时区文件(这不是一件容易的事)或者等待并希望它们能在 4 月 27 日之前更新。
注意:如需了解当前时区信息,请访问IANA 时区数据库页面。似乎最近的埃及夏令时变化已纳入最新版本2023年(发布于 2023-03-28),所以你可能希望 Ubuntu 也能得到更新很快”!
更新(2023-04-13)
截至今天,更新版本 (2023c) 似乎软件包 tzdata可用;您可以apt upgrade
或apt dist-upgrade
您的系统并重试我上面提到的测试:
$ zdump -v Egypt | grep 2023
Egypt Thu Apr 27 21:59:59 2023 UT = Thu Apr 27 23:59:59 2023 EET isdst=0 gmtoff=7200
Egypt Thu Apr 27 22:00:00 2023 UT = Fri Apr 28 01:00:00 2023 EEST isdst=1 gmtoff=10800
Egypt Thu Oct 26 20:59:59 2023 UT = Thu Oct 26 23:59:59 2023 EEST isdst=1 gmtoff=10800
Egypt Thu Oct 26 21:00:00 2023 UT = Thu Oct 26 23:00:00 2023 EET isdst=0 gmtoff=7200
$ TZ=Egypt dstcheck.pl | grep 2023/
2023/04/28 Fri 01:00:01 [2023/04/27 Thu 22:00:01 UTC] +3 - Seconds: 1682632801
2023/10/26 Thu 23:00:01 [2023/10/26 Thu 21:00:01 UTC] +2 - Seconds: 1698354001
如果这个包看起来“被阻止”目前,您可以等待几天,或者直接执行apt install tzdata
。
答案2
对于无法升级 tzdata 的用户,有一个简单的方法可以通过更新 IANA DB 来更新这些数据
wget https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz
tar xvzf tzdata2023c.tar.gz
sudo zic africa
sudo zic antarctica
sudo zic asia
sudo zic australasia
sudo zic europe
sudo zic northamerica
sudo zic southamerica
答案3
首先,让我澄清一下你所说的内容(如果你的国家做出了“愚蠢”的决定(对不起,用这个词!),在如此短的时间内决定更改夏令时,无论出于何种原因,对于任何国家来说,这都是不可接受的,这是不礼貌的。我认为他提出了问题,而你想回答,你可以从技术角度回答他的问题。
在他的问题中,他只是提到时钟将于 4 月 27 日更改,但这个决定很久以前就宣布了