我使用 GMT+8,并将我的 hwlock 设置为 UTC。
[root@sjoam2 ~]# date
Sat Aug 1 16:32:04 SGT 2015
[root@sjoam2 ~]# hwclock --systohc --utc
[root@sjoam2 ~]# hwclock --debug
hwclock from util-linux-ng 2.17.2
Using /dev interface to clock.
Last drift adjustment done at 1438417931 seconds after 1969
Last calibration done at 1438417931 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2015/08/01 08:32:17
Hw clock time : 2015/08/01 08:32:17 = 1438417937 seconds since 1969
Sat 01 Aug 2015 04:32:17 PM SGT -0.641290 seconds
[root@sjoam2 ~]#
看起来不错。
hwclock 调试显示 08:32 UTC
-- 我不太确定 hwclock --debug (Sat 01 Aug 2015 04:32:17 PM SGT -0.641290 seconds) 中的最后一句话,它以当前时区格式显示日期(即 +8 小时)- 我认为它没问题
重启后
[root@sjoam2 ~]# hwclock --debug
hwclock from util-linux-ng 2.17.2
Using /dev interface to clock.
Last drift adjustment done at 1438417931 seconds after 1969
Last calibration done at 1438417931 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2015/08/01 08:36:45
Hw clock time : 2015/08/01 08:36:45 = 1438418205 seconds since 1969
Sat 01 Aug 2015 04:36:45 PM SGT -0.782726 seconds
[root@sjoam2 ~]#
从 hwclock --debug 输出来看似乎仍然没问题 Hwclock = 08:36
-- 我不太确定 hwclock --debug (Sat 01 Aug 2015 04:36:45 PM SGT -0.782726 seconds) 中的最后一句话,它以当前时区格式显示日期(即 +8 小时)- 我认为它没问题
但是看看现在的日期
[root@sjoam2 ~]# date
Sun Aug 2 00:40:31 SGT 2015
它将 hwclock 最后输出的正确时间(2015 年 8 月 1 日星期六下午 4:36:45 SGT)加上另外 8 小时,也就是将 UTC 时间总共加上 16 小时。
我该如何防止这种情况发生?我的配置哪里出了问题。
答案1
我date
使用hwclock
此命令进行同步:
$ sudo hwclock --systohc
上述命令date
会不时地进行写入hwclock
。
笔记:如果你想要hwclock
时不时地写date
,请这样做:
$ sudo hwclock --hctosys
测试用:
$ sudo hwclock --show
$ date
笔记:您可以使用hwclock -s
而不是hwclock --hctosys
和hwclock -w
而不是hwclock --systohc
。
systohc
= 系统时间到硬件时间。
hctosys
= 硬件时间到系统时间。
答案2
您的硬件时钟应该存储 UTC 时间,但您忘记使用该-u
选项来告知hwclock
这一点。例如,
hwclock -ru
重置日期然后运行
hwclock -su
将解决问题。