19.18. 配置硬件时钟更新
系统时钟可用于更新硬件时钟,也称为实时时钟(RTC)。本节演示了任务的三种方法:
- 即时一次性更新
要对硬件时钟进行即时一次性更新,以 root 用户身份运行这个命令:
~]# hwclock --systohc
- 在每次引导时更新
要在执行 ntpdate 同步程序后在每次引导时更新硬件时钟,请执行以下操作:
在
/etc/sysconfig/ntpdate
文件中添加以下行:SYNC_HWCLOCK=yes
以 root 用户身份启用
ntpdate
服务:~]# systemctl enable ntpdate.service
请注意,nt
date
服务使用/etc/ntp/step-tickers
文件中定义的 NTP 服务器。注意在虚拟机上,下次启动主机时将更新硬件时钟,而不是虚拟机。
- 通过 NTP 更新
每次由
ntpd
或chronyd
服务更新系统时钟时,您可以更新硬件时钟:以 root 用户身份启动
ntpd
服务:~]# systemctl start ntpd.service
要使行为在引导后保留,请在引导时自动启动该服务:
~]# systemctl enable ntpd.service
或者
以 root 用户身份启动
chronyd
服务:~]# systemctl start chronyd.service
要使行为在引导后保留,请在引导时自动启动该服务:
~]# systemctl enable chronyd.service
因此,每次由
ntpd
或chronyd
同步系统时钟时,内核会在 11 分钟内自动更新硬件时钟。警告这种方法可能并不总是有效,因为上面提到的 11 分钟模式并不总是启用。因此,硬件时钟不一定会在系统时钟更新中更新。
要检查软件时钟与硬件时钟的同步,以
root
用户身份使用ntpdc -c kerninfo
或ntptime
命令:~]# ntpdc -c kerninfo
结果可能类似如下:
pll offset: 0 s pll frequency: 0.000 ppm maximum error: 8.0185 s estimated error: 0 s
status: 2001 pll nano
pll time constant: 6 precision: 1e-09 s frequency tolerance: 500 ppm或者
~]# ntptime
结果可能类似如下:
ntp_gettime() returns code 0 (OK) time dcba5798.c3dfe2e0 Mon, May 8 2017 11:34:00.765, (.765135199), maximum error 8010000 us, estimated error 0 us, TAI offset 0 ntp_adjtime() returns code 0 (OK) modes 0x0 (), offset 0.000 us, frequency 0.000 ppm, interval 1 s, maximum error 8010000 us, estimated error 0 us, status 0x2001 (PLL,NANO), time constant 6, precision 0.001 us, tolerance 500 ppm,
要识别硬件时钟是否与系统时钟同步,请查看输出中的状态行。如果该行包含单词
unsync 或
UNSYNC
,则硬件时钟不会与系统时钟同步。硬件时钟与系统时钟同步。
status 0x2001 (PLL,NANO)
硬件时钟未与系统时钟同步。
status 0x41 (PLL,UNSYNC)