Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

19.18. 配置硬件时钟更新

系统时钟可用于更新硬件时钟,也称为实时时钟(RTC)。本节演示了任务的三种方法:

即时一次性更新

要对硬件时钟进行即时一次性更新,以 root 用户身份运行这个命令:

~]# hwclock --systohc
在每次引导时更新

要在执行 ntpdate 同步程序后在每次引导时更新硬件时钟,请执行以下操作:

  1. /etc/sysconfig/ntpdate 文件中添加以下行:

    SYNC_HWCLOCK=yes
  2. 以 root 用户身份启用 ntpdate 服务:

    ~]# systemctl enable ntpdate.service

    请注意,nt date 服务使用 /etc/ntp/step-tickers 文件中定义的 NTP 服务器。

    注意

    在虚拟机上,下次启动主机时将更新硬件时钟,而不是虚拟机。

通过 NTP 更新

每次由 ntpdchronyd 服务更新系统时钟时,您可以更新硬件时钟:

以 root 用户身份启动 ntpd 服务:

~]# systemctl start ntpd.service

要使行为在引导后保留,请在引导时自动启动该服务:

~]# systemctl enable ntpd.service

或者

以 root 用户身份启动 chronyd 服务:

~]# systemctl start chronyd.service

要使行为在引导后保留,请在引导时自动启动该服务:

~]# systemctl enable chronyd.service

因此,每次由 ntpdchronyd 同步系统时钟时,内核会在 11 分钟内自动更新硬件时钟。

警告

这种方法可能并不总是有效,因为上面提到的 11 分钟模式并不总是启用。因此,硬件时钟不一定会在系统时钟更新中更新。

要检查软件时钟与硬件时钟的同步,以 root 用户身份使用 ntpdc -c kerninfontptime 命令:

~]# 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)