提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
NTP对时服务设置以及自动对时设置
前言一、NTP服务安装1.在线安装2.离线安装
二、NTP客户端自动对时两种方法1.使用ntp服务自带的自动对时功能①配置ntp.conf②重启ntp服务③查看ntp服务状态④查看运行状态
2.使用shell脚本和crontab实现自动对时①关闭ntp服务②使用脚本手动对时③添加crontab任务④重启crontab服务⑤开启crontab日志输出
总结
前言
由于工作需要在ubuntu上部署ntp客户端与主站对时,本文就介绍了如何设置ntp客户端和自动对时。
一、NTP服务安装
1.在线安装
使用root用户执行如下命令
apt-get install ntp//安装ntp服务
apt-get install ntpdate//安装ntpddate服务
2.离线安装
Ubuntu的deb包下载地址: github地址
二、NTP客户端自动对时两种方法
1.使用ntp服务自带的自动对时功能
①配置ntp.conf
红框部分是增加的内容
prefer表示优先向192.168.13.31对时,minpoll和maxpoll用来限制同步时间,3表示2的3次方,minpoll 3表示最短8秒对时一次
②重启ntp服务
root用户下使用如下命令
service ntp restart
③查看ntp服务状态
root用户下使用如下命令
servic --status-all
【+】ntp表示ntp服务开启,【-】ntp表示ntp服务关闭
④查看运行状态
root用户下使用如下命令
ntpq -p
参数详解
参数含义ststratum阶层when距离上次同步时间多少秒poll多少秒对一次时reach已经对时的次数delay网络延时offset时间补偿jitter系统时间与bios时间差
2.使用shell脚本和crontab实现自动对时
①关闭ntp服务
使用ntpdate手动对时,一定要先关闭ntp服务,否则会出现如下问题 root用户下使用如下命令
service ntp stop//关闭ntp服务
②使用脚本手动对时
ntp_proofread.sh
#!/bin/sh
dir_name=`dirname $0`
ip_path=$dir_name/ntp_serv_ip.txt
for line in $(cat $ip_path)
do
{
ip=$line
echo $ip
}
done
/usr/sbin/ntpdate $ip//这里需要使用ntpdate所在的绝对路径,否则会出现找不到ntpdate命令的情况
/usr/sbin/ntpdate $ip
/usr/sbin/ntpdate $ip//对时三次,防止因为网络延迟导致对时不成功
只需要将ntp_serv_ip.txt中的ip改为你要对时的ntp服务主机就行。
③添加crontab任务
这里我直接使用脚本进行添加 addcron.sh
#!/bin/sh
myscript=ntp_proofread.sh
filePath=$(cd "$(dirname "$0")";pwd)
echo $filePath
crontab -l > cron
number=`grep -n "$myscript" cron | cut -d ":" -f 1`
aa=$number
echo $aa
if [ -z $aa ];
then
echo "messions is not"
echo '* * * * * '$filePath'/'$myscript'' >> cron
else
echo "messions is allready"
sed -i '/'$myscript'/d' cron
echo '* * * * * '$filePath'/'$myscript'' >> cron
fi
这里采用的是每分钟对一次时,如果有需要可以自定对时时间。 crontab文件语法:
* * * * * command
分 时 天 月 周 命令
每列表示意义
a. 第一个表示的是分钟1~59分钟,默认表示的是每分钟都执行,x-y表示的是x~y这段每分钟都执行,*/n表示每n分钟执行一次,x,y,z表示的是x,y,z分钟都执行。
b. 第二个表示的是小时1~23小时,默认表示的是每小时都执行,x-y表示的是x~y这段每小时都执行,*/n表示每n小时执行一次,x,y,z表示的是x,y,z小时都执行。
c. 第三个表示的是天1~31,默认表示的是每天都执行,x-y表示的是x~y这段每天都执行,*/n表示每n天执行一次,x,y,z表示的是x,y,z天都执行。
d. 第四个表示的是月1~12,默认表示的是每个月都执行,x-y表示的是x~y这个段每月都执行,*/n表示每n分钟执行一次,x,y,z表示的是x,y,z天都执行。
e. 第五个*表示的是周0~6(0表示周天),默认周一~周天都执行,x-y表示周x~周y每天都执行。
f. 第六个command表示要执行的命令或者任务。
④重启crontab服务
root用户下使用如下命令
service cron restart
crontab启动后,需要3-4分钟后才会执行脚本。
⑤开启crontab日志输出
ubuntu下cron服务默认无日志输出。如果crontab不生效的话,对于我们锁定问题不方便,所以这边开启日志输出。 root用户下使用如下命令
vim /etc/rsyslog.d/50-default.conf
去掉cron.*前的#号,然后重启cron服务
sudo service cron restart
这样就可以在/var/log里面发现有cron的日志文件了,我们就可以通过查看日志文件找到问题所在
总结
ntp自带的自动对时,有时候会因为网络延迟原因导致对时失败,需要等下个周期才能重新对时。所以在实际工作中采用脚本的方式来进行自动对时。