我正在运行 Ubuntu 20.04 并使用 timedatectl 和 timesyncd。如果我启用 NTP 同步,那么我的本地和通用日期将设置为 2058 年。
如果我进行手动检查(使用 python),我使用的 NTP 服务器工作正常。这种情况以前发生过,并以某种方式自行纠正,但现在又发生了。
知道出了什么问题吗?
Local time: mié 2058-05-22 01:16:55 CEST
Universal time: mar 2058-05-21 23:16:55 UTC
RTC time: sáb 2022-05-21 22:21:03
Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
/etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org ntp.ubuntu.com
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
答案1
我设法找到并解决了这个问题。将其发布在这里,供遇到同样问题的人参考。
我首先检查了 systemd-timesyncd 的日志,发现连接 ntp 服务器已超时,并且日期/时间被设置为最后记录的时间戳。
> systemctl status systemd-timesyncd
may 22 00:31:38 falcon systemd[1]: Starting Network Time Synchronization...
may 22 00:31:38 falcon systemd-timesyncd[73828]: System clock time unset or jumped backwards, restoring from recorded timestamp: Wed 2058-05-22 01:16:53 CEST
may 22 01:16:53 falcon systemd[1]: Started Network Time Synchronization.
may 22 01:17:04 falcon systemd-timesyncd[73828]: Timed out waiting for reply from 91.189.91.157:123 (ntp.ubuntu.com).
我尝试使用 python 从 ntp 服务器获取时间,但发现设置的时间太早,导致无法获取。手动修复时间后,可以获取当前时间。这意味着我无法连接到 ntp 服务器,因为我的日期/时间被设置为记录的时间戳 2058 年,从而阻止进一步同步。
import ntplib
from time import ctime
c = ntplib.NTPClient()
response = c.request('ntp.ubuntu.com')
print(ctime(response.tx_time))
然后我检查了timesyncd 文档发现记录的时间被保存/var/lib/systemd/timesync/clock
为最后修改时间。
所以我重置了这些文件的修改日期和最后访问日期。
touch -a -m -t 202205212221 /var/lib/systemd/timesync/clock
然后我禁用 ntp 并手动设置时间,然后重新启动 timesyncd,现在一切正常。