Linux下,保持系统时间与标准时间一致,是一项很重要的也非常有必要做的一项任务。使用NTP并不需要在本机安装ntpd服务,除非你还希望你的服务器为其它服务器提供授时服务。
系统环境
CentOS Linux release 7.3.1611 (Core)
[root@dong ~]# uname -a
Linux dong 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@dong ~]#
我这里是CentOS 7.3 内核为3.10.0-514.el7.x86_64
卸载ntp服务
为了保持系统的整洁,并不需要专门安装ntp服务到本机,因为,安装该服务后,它会开放很多的端口,看起来很不爽,这里把它卸载了(系统默认并不会安装,如果你发现你安装了,可以参照以下代码将其删除)
1 2 3 |
systemctl stop ntpd #停止ntp服务 systemctl disable ntpd #禁止ntp服务随系统启动 yum remove ntp #卸载ntp软件包 |
查看系统时间
Local time: Tue 2018-01-02 14:15:54 CST
Universal time: Tue 2018-01-02 06:15:54 UTC
RTC time: Tue 2018-01-02 06:15:54
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@dong ~]# date
Tue Jan 2 14:15:57 CST 2018
同步系统时间
2 Jan 14:17:53 ntpdate[44309]: adjust time server 120.25.108.11 offset 0.042118 sec
[root@dong ~]#
只需要执行这样一条命令,就会自动修正系统时间
添加定时任务
可以通过定时任务的方式,每天执行一次该命令,这样,可以确保系统时间的准确性
systemctl restart crond
如上设置为每天夜里2点钟执行一次校时命令,重启crond服务,让定时任务生效。
排坑经历
更新于2018-04-10
要点:使用cron执行ntpdate时,需要明确命令路径,否则会找不到命令
背景:之前每台服务器均添加定时任务0 2 * * * ntpdate cn.pool.ntp.org >/dev/null 2>&1,每天凌晨2点校准一次服务器时间,理论上讲,这个较准频率是没有问题的,但是,实际情况是两台服务器时间误差超过32秒,并且每台服务器时间都不一致,排查定时任务日志,发现定时任务有运行。
分析:因为在定时任务中使用了>/dev/null 2>&1将命令执行结果丢掉了,所以不能看到运行情况,实际上,在定时任务中,会因找不到ntpdate命令而执行失败!分析定时任务中环境变量PATH的值可以发现,cron(bash)默认的PATH=/usr/bin:/bin,仅包含两个目录,如果要执行的命令不在这两个目录中,那么,就会出现因找不到命令而执行失败的情况。因为ntpdate位于/usr/sbin目录下,所以是找不到的。
SHELL=/bin/sh
USER=root
PATH=/usr/bin:/bin
PWD=/root
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
whereis ntpdate
/usr/sbin/ntpdate
解决:不直接使用ntpdate而是用/usr/sbin/ntpdate
最佳实践:
/usr/sbin/ntpdate 85.199.214.100 193.228.143.23 202.112.10.37 182.92.12.11 120.25.108.11 120.25.115.19 203.107.6.88 && /sbin/hwclock -w
说明:这里使用了多个ntp服务器IP,这样可以保证可靠性,因为通常一个域名形式的ntp,实际上可以解析出多个ip,而其实中测试发现,并不是解析出的每一个ip都可用,因此,通过多ip的方式,可以有效排错,消除时间获取出错而导致系统时间归零的情况,hwclock -w将当前时间写回硬件时钟,这样就算在系统重启后,依然能保证时间不反弹
另外,因为ntpdate调整时间是直接调整,对高度依赖时间的应用可能会有潜在风险,所以在定时任务中更新频率不要太勤,每两天或者更长时间执行一次即可
附,常用ntp服务器
ntp1.aliyun.com 182.92.12.11
ntp4.aliyun.com 120.25.108.11
ntp2.aliyun.com 120.25.115.19
ntp6.aliyun.com 203.107.6.88
time1.aliyun.com
time2.aliyun.com
time3.aliyun.com
time4.aliyun.com
time5.aliyun.com
time.pool.aliyun.com
转载请注明:轻风博客 » Linux下使用NTP同步系统时间