我有一台服务器(Ubuntu 20.04),其时间是异步的(错误约 7.5 分钟;RTC 似乎已经等于/接近“真实”时间),我想纠正它:
timedatectl
Local time: Do 2021-04-08 14:32:02 CEST
Universal time: Do 2021-04-08 12:32:02 UTC
RTC time: Do 2021-04-08 12:24:16
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: no
NTP service: n/a
RTC in local TZ: no
为此,我在我的/etc/ntp.conf
(如上所述)中包含了一些时间服务器这里)并通过以下方式重新启动 ntp sudo service ntp restart
:
server 0.de.pool.ntp.org
server 1.de.pool.ntp.org
server 2.de.pool.ntp.org
server 3.de.pool.ntp.org
然后我就这么做sudo timedatectl set-time 14:25:00
了将系统时钟设置为指定时间这样不同步的系统时间就会比较接近“真实”时间。
之后时间实际上似乎(更)正确(尽管说“系统时钟同步:否”):
timedatectl
Local time: Do 2021-04-08 14:25:04 CEST
Universal time: Do 2021-04-08 12:25:04 UTC
RTC time: Do 2021-04-08 12:25:04
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: no
NTP service: n/a
RTC in local TZ: no
但突然(大约半分钟后)我再次收到此信息(本地/世界时间 != RTC 时间):
timedatectl
Local time: Do 2021-04-08 14:33:15 CEST
Universal time: Do 2021-04-08 12:33:15 UTC
RTC time: Do 2021-04-08 12:25:29
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: no
NTP service: n/a
RTC in local TZ: no
什么样的机制可能会干扰这里,导致每次都将“当地时间”重置为错误的时间?
[更新]
好的,现在我已经明白了在 Ubuntu 中实际上有两种不同的方法来管理/同步时间:
旧方法:
ntp
(更确切地说ntpd
是它的配置文件/etc/ntp.conf
)-> 它可能仍然安装在我的系统上,因为它已经从旧的 Ubuntu 发行版升级了好几次
新方法:
timesyncd
这似乎是新的方式自 Ubuntu 16.04 起(带有配置文件/etc/systemd/timesyncd.conf
):
[...] 这将确保不会有两个时间同步服务发生冲突。虽然不再建议使用,但这仍然适用于安装 ntpd 以保留升级后的任何旧行为/配置。但这也意味着从以前的版本升级时,ntp/ntpdate 可能仍会安装,因此会禁用新的基于 systemd 的服务。
ntpdate 被认为已被弃用,取而代之的是 timedatectl(或 chrony),因此默认情况下不再安装。timesyncd 通常会做正确的事情,让您的时间保持同步[...]
注意:ntp/ntpd != NTP 协议
ntpd
我猜想安装的旧服务sudo apt-get install ntp
与 NTP 协议本身并不相同。阅读有关此问题的文章时,这引起了很多困惑,因为在timesyncd
NTP 协议的上下文中当然会使用,但据我所知,这与ntp
安装/命令无关。ntpd
答案1
我仍然不知道为什么原来的问题(时间重置回错误的时间)实际上会发生,但我可以通过卸载ntp
(sudo apt-get remove ntp
)来让我的时间最终正常工作,它会自动安装和配置,systemd-timesyncd
以便我的所有系统时间最终都将自己设置为正确的设置:
安装后依然异步:
$ timedatectl
Local time: Fr 2021-04-09 14:04:45 CEST
Universal time: Fr 2021-04-09 12:04:45 UTC
RTC time: Fr 2021-04-09 12:12:31
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
几分钟后,一切终于正常了:
$ timedatectl
Local time: Fr 2021-04-09 14:08:54 CEST
Universal time: Fr 2021-04-09 12:08:54 UTC
RTC time: Fr 2021-04-09 12:08:54
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
非常感谢你的帮助!
答案2
RTC 是实时时钟,即 BIOS 电池供电的硬件时间。您的 BIOS 电池可能出现故障,导致硬件时钟的漂移比应有的严重。