CentOS 8系统做了不少更新,例如 nftables代替iptables、dnf代替yum成为默认包管理工具。这不,许多人发现CentOS 7熟悉的 ntpdate 命令没有了,也不能用yum安装上,同步时间顿时成了一个难题。

本文介绍CentOS 8使用chrony同步时间。

chrony介绍

Chrony是一个开源软件,能用来于时钟服务器(NTP)同步,从而保持系统时间精确。chrony由两部分组成:后台运行的chronyd,前端使用的chronycchronyd用于调整内核中系统时钟和时钟服务器同步,它确定计算机增减时间的比率,并对此进行补偿;chronyc提供查询和配置接口,可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

chrony同步时间

首先安装crhony:

dnf install -y chrony
# 也可以用yum安装
yum install -y chrony

chrony配置文件是 /etc/chrony.conf,其内容大体如下:

chrony配置文件
chrony配置文件

一般来说,配置文件无需改动就能正常使用。当然为了同步速度快,可以使用国内的ntp服务器,例如将第一行改成: pool ntp.ntsc.ac.cn iburst(公共ntp服务器请参考:公共 NTP 服务器地址大全)。

接下来可以手动同步时间:

chronyd -q 'server ntp.ntsc.ac.cn iburst'
# 输出如下
2020-03-13T09:44:30Z chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2020-03-13T09:44:30Z Initial frequency -25.473 ppm
2020-03-13T09:44:34Z System clock wrong by -0.000340 seconds (step)
2020-03-13T09:44:34Z chronyd exiting

更好的方式是让chronyd后台运行,自动同步时间:

systemctl enable chronyd
systemctl start chronyd

注意:chronyd服务启动后,不能再用chronyd方式手动同步时间,会报“Fatal error : Another chronyd may already be running”的错误。

chronyc tracking命令可以查看同步状态(需要chronyd服务在运行):

Reference ID    : 771CE546 (119.28.229.70)
Stratum         : 3
Ref time (UTC)  : Fri Mar 13 09:49:25 2020
System time     : 0.000000666 seconds slow of NTP time
Last offset     : +0.000767246 seconds
RMS offset      : 0.000767246 seconds
Frequency       : 25.561 ppm slow
Residual freq   : -117.006 ppm
Skew            : 6.375 ppm
Root delay      : 0.014839342 seconds
Root dispersion : 0.026745666 seconds
Update interval : 1.2 seconds
Leap status     : Normal

chronyc sources命令可以查看同步的时间服务器(需要chronyd服务在运行):

210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- time.cloudflare.com           3   6    17    87  -4121us[ -750us] +/-   44ms
^* 119.28.229.70                 2   6    37    23   +557us[+3930us] +/-   21ms
^- undefined.hostname.local>     2   6    37    23  -2976us[ +398us] +/-   80ms
^- 203.95.213.129                2   6    17    87    -22ms[  -18ms] +/-  162ms

其他

1. 如果还是希望使用 ntpdate,请参考这篇文章安装:CentOS8.0通过yum安装ntp同步时间

参考

1. How to Sync Time in Linux Server using Chrony

2. 公共 NTP 服务器地址大全

3. chrony概念详解