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)