为什么“timedatectl set-time”之后本地时间会重置为错误的时间?

为什么“timedatectl set-time”之后本地时间会重置为错误的时间?

我有一台服务器(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 协议本身并不相同。阅读有关此问题的文章时,这引起了很多困惑,因为在timesyncdNTP 协议的上下文中当然会使用,但据我所知,这与ntp安装/命令无关。ntpd

答案1

我仍然不知道为什么原来的问题(时间重置回错误的时间)实际上会发生,但我可以通过卸载ntpsudo 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 电池可能出现故障,导致硬件时钟的漂移比应有的严重。

相关内容