Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步

ntpdate同步时间

首先可以输入命令 ntpdata 看有没有输出东西,只要有输出说明已经有安装,如果没有则需要安装

1.安装ntpdate

yum install ntpdate -y

2.date命令

使用date可以看当前的时间-最简单的方法就是使用 date -s +时间

date :查看当前时间,结果如下:Tue Mar 4 01:36:45 CST 2014
date -s 09:38:40 :设置当前时间,结果如下:Tue Mar 4 09:38:40 CST 2014

但是这样的方式并不好用因为1个是要手动填写时间有误差,二是重启后就会恢复原样

3.ntpdate命令

使用ntpdate命令进行时间同步

ntpdate ntp1.aliyun.com
  • ​ntp1.aliyun.com​ 是时间同步服务器

  • 可以加餐宿 -u

  • ​-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;​

国内:

cn.pool.ntp.org  中国开源免费NTP服务器
ntp1.aliyun.com 阿里云NTP服务器
ntp2.aliyun.com 阿里云NTP服务器
time1.aliyun.com 阿里云NTP服务器
time2.aliyun.com 阿里云NTP服务器

国外:

time1.apple.com 苹果NTP服务器
time2.apple.com 苹果NTP服务器
time3.apple.com 苹果NTP服务器
time4.apple.com 苹果NTP服务器
time5.apple.com 苹果NTP服务器
time1.google.com 谷歌NTP服务器
time2.google.com 谷歌NTP服务器
time3.google.com 谷歌NTP服务器
time4.google.com 谷歌NTP服务器
pool.ntp.org 开源免费NTP服务器

其他地区需要自己去找哟

常见错误处理

ntpdate[27925]: no servers can be used, exiting

出现这个错误,一般都是ntp已经在运行了,我们只需要杀掉他的进程即可

先查看ntp状态:

service ntpd status

得到这样一个输出,前提是安装了ntp,active说明正在运行

找ntp的pid

ps -ef|grep xntpd

然后 杀掉这个进程的父进程

kill -9 PID

如果说不会找父进程-我们可以找ntp的默认端口-默认端口为123

lsof -i:123

没有lsof就安装

yum install lsof -y

然后在执行kill杀掉进程

或者说执行守护进程命令:

systemctl status ntpd

最后执行ntp命令同步时间:

ntpdate ntp1.aliyun.com

no server suitable for synchronization found

这个报错一般是此机器无法链接到这个ntp服务器

我们可以ping一下域名看能否ping通,换一个也可以

如果可以ping通,但是还是报此错误,我们就需要加上 -u 参数

-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;
ntpdate -u  ntp1.aliyun.com

注意空格