实际时间:下午 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。