欧阳简之 > CentOS7.6 设置 ntpdate rdate 时间同步

热爱代码,对每一行代码保持一颗敬畏之心。

在开发对接中,服务器时间不同步可能会导致各种问题,例如有些接口会校验时间,可能接口请求失败,例如A B服务器时间差导致数据库记录时间不一致从而导致各种奇葩问题,所以,服务器设置时间同步还是非常有必要(必须)干的一件事情。

设置时区(CentOS 7)

先执行命令timedatectl status|grep 'Time zone'查看当前时区

[root@oyjz_cn ~]# timedatectl status|grep 'Time zone'
       Time zone: Asia/Shanghai (CST, +0800)

如果不是中国时区(Asia/Shanghai),则设置为中国时区:

#设置硬件时钟调整为与本地时钟一致
timedatectl set-local-rtc 1
#设置时区为上海
timedatectl set-timezone Asia/Shanghai

方法一:使用ntpdate同步时间

ntpdate 是目前最常用也是最普遍的方式

#安装ntpdate
yum -y install ntpdate
#同步时间
ntpdate -u pool.ntp.org
#同步完成后,date命令查看时间是否正确
date

常用的时间服务器,如果需要更多可以前往:http://www.ntp.org.cn获取

#中国
cn.ntp.org.cn
#中国香港
hk.ntp.org.cn
#美国
us.ntp.org.cn

设置定时同步

#创建crontab任务
crontab -e
#添加定时任务
*/30 * * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1

上面的计划任务会在每30分钟进行一次时间同步,注意/usr/sbin/ntpdate为ntpdate命令所在的绝对路径,不同的服务器可能路径不一样,可以使用which命令来找到绝对路径,方法如下:

[root@oyjz_cn ~]# which ntpdate
/usr/sbin/ntpdate

方法二:使用rdate同步时间

ntpdate服务需要使用udp/123端口,但是某些服务商禁止了所有UDP协议,所以你会发现无论如何ntpdate总是同步出错。

#下方是ntpdate同步时间报错的一个列子
[root@oyjz_cn ~]# ntpdate -u pool.ntp.org
 1 Jun 16:13:46 ntpdate[8389]: no server suitable for synchronization found

这个时候我们可以改用rdate命令来同步时间,方法如下:

#安装rdate
yum -y install rdate
#同步时间
rdate -s time-b.nist.gov
#查看时间是否正确
date

设置定时同步

#创建crontab任务
crontab -e
#添加定时任务
*/20 * * * * /usr/bin/rdate -s time-b.nist.gov > /dev/null 2>&1

其他rdate时间服务器:

s1d.time.edu.cn #东南大学
s1e.time.edu.cn #清华大学
s2a.time.edu.cn #清华大学
s2b.time.edu.cn #清华大学
s2c.time.edu.cn #北京邮电大学
ntp.sjtu.edu.cn 202.120.2.101 #(上海交通大学网络中心NTP服务器地址)
s1a.time.edu.cn #北京邮电大学
s1b.time.edu.cn #清华大学
s1c.time.edu.cn #北京大学
clock.cuhk.edu.hk #香港中文大学授时中心
tagged by ntpdate rdate cen'to's