很久之前发现多台服务器直接时间不同步,导致了很多业务问题。决定采用ntpdate来进行时间同步。
ntpdate ntp.aliyun.com
单独执行没有问题。写在sh脚本中执行也没有问题。
但是时间同步应该需要周期性执行,保证同步,所以使用crontab周期性执行ntpdate,但是发现在crontab里并不会执行!!!
最后发现的问题是ntpdate的路径问题,必须在crontab里写明ntpdate的绝对路径。
*/10 * * * * /usr/sbin/ntpdate ntp.aliyun.com >> /tmp/ntp_sync.log
这样就ok啦!
个人猜想原因可能是:crontab是在Linux的守护进程中执行的,而守护进程的空间环境和bash所使用的空间环境不同导致,是否
守护进程的空间不使用相对路径?还是说/usr/sbin/不在他的PATH变量中?有待研究。