月下博客

CentOS 8同步时间

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配置文件

一般来说,配置文件无需改动就能正常使用。当然为了同步速度快,可以使用国内的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概念详解