在我使用互联网之前,系统时间都是不正确的...但是 hwclock 是正确的

在我使用互联网之前,系统时间都是不正确的...但是 hwclock 是正确的

实际时间:下午 4:06

router@router:~$ sudo hwclock

*Sat 09 Jan 2016 04:06:55* [ 实际时间是下午 4 点 ]

router@router:~$ date

*Sat Jan 9 1:06:44 NPT 2016*[但 ubuntu 显示时间为下午 1 点]

但一旦我连接互联网:

router@router:~$ date

*Sat Jan 9 16:06:44 NPT 2016*[只有当我连接互联网时,下午 1 点才会更正为下午 4 点.... 否则不会]

如何与 hwclock 同步时间???

答案1

hwclock 不知道时区和夏令时,不同的操作系统对此的处理方式也不同。因为旧 DOS 只知道 RTC/hwclock,所以它被设置为本地时间。我认为这仍然是所有当前 Windows 系统的默认设置。(大多数?)基于 Linux 的系统中,默认设置是将 hwclock 设置为 UTC。

由于系统可以启动多个不同的操作系统,Linux 不能要求硬件时钟采用 UTC 时间。因此,如果硬件时钟运行的是本地时间,则它有一个参数可以将时间从硬件时钟调整为内核时钟/UTC。程序通常希望显示本地时间,因此有一个不同的参数可以调整时区和夏令时。

似乎您的系统中的时钟、UTC 校正和时区/夏令时之间存在差异。

你可以看到你的 hwclock 正在运行timedatectl,它将显示你想要的所有数据:

Local time: za 2016-01-09 17:46:05 CET
Universal time: za 2016-01-09 16:46:05 UTC
RTC time: za 2016-01-09 16:46:05
Time zone: Europe/Amsterdam (CET, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

如果我将时钟改为:

Local time: za 2016-01-09 17:52:10 CET
Universal time: za 2016-01-09 16:52:10 UTC
RTC time: za 2016-01-09 17:52:10
Time zone: Europe/Amsterdam (CET, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

然后重启*,hwclock 将用于设置初始内核时间。重启后,hwclock 会给我 17:52,而 date 会给我错误的本地时间 18:52。与 ntp 服务器通信后,它会调整内核时间,您将再次看到正确的日期时间。

*现在有些 Linux 发行版在关机时根据系统时间设置时钟,因此重启后时钟可能会调整为 UTC。

相关内容