背景
项目使用的Linux机器,钟摆与实际不一致,运行一段时间后,机器本地时间和北京时间会产生较大差异,但是机器上的服务涉及到第三方服务调用,第三方对时间有校验,时间差异过大头部校验会失败,所以需要将机器时间与时间服务器进行同步。
Linux命令
ntpdate
用于同步机器时间的指令。
usage:
ntpdate [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] [-U username] server ...
crontab
用于设置周期性被执行的指令, 可用于设置定时任务。如果系统不存在crontab
指令,可执行yum install crontabs
进行安装。
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging
配置
1、创建 /root/datesync 目录,mkdir /root/datesync
2、进入新建目录,cd /root/datesync
3、创建 datesync.sh 文件,vim datesync.sh
这里假设时间服务器的IP为 127.0.0.1 (如果机器可以访问公网,那么可以使用ntpdate cn.pool.ntp.org
进行网络对时)
/usr/sbin/ntpdate 127.0.0.1 >> /root/datesync/synclog.log 2>&1
4、给 datesync.sh 文件赋予可执行权限 chmod u+x datesync.sh
5、 添加定时任务, crontab -e
, 间隔一段时间后执行一次
这里设定为每天的七点三十分执行一次
30 7 * * * /root/datesync/datesync.sh
ps : 脚本内容使用指令时最好使用绝对路径,否则可能由于环境问题寻址不到指令,进而导致脚本执行失败。