在我们的项目中,需要同步Linux服务器的时间,于是用到了ntpdate命令
[root@MyCloudServer xxx]# crontab -l 0,10,20,30,40,50 * * * * ntpdate time.windows.com &>/xxx/ntpdate.log
/bin/sh: ntpdate: command not found说明定时服务在/bin/sh目录中去找ntpdate命令,并且没有找到
[root@MyCloudServer cron]# whereis ntpdate ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz问题找到了,在定时服务中,ntpdate命令要使用全路径
0,10,20,30,40,50 * * * * /usr/sbin/ntpdate time.windows.com &>/xxx/ntpdate.log然而保存后,等到整数分钟后,在日志中没有发现该命令执行,为什么呢,猜想如下
a.以上命令格式错误,时间格式错误
b.cron自动服务没有执行
通过网上查找时间的命令格式,发现
0,10,20,30,40,50 * * * *并没有错误,而手动执行
/usr/sbin/ntpdate time.windows.com &>/xxx/ntpdate.log也成功执行,那么就看看b是否存在问题
[root@MyCloudServer xxx]# ps -ef | grep cron root 26157 22992 0 10:04 pts/3 00:00:00 grep cron发现没有cron执行进程
[root@MyCloudServer xxx]# service crond status crond is stopped竟然服务没有启动,好吧
[root@MyCloudServer xxx]# service crond start Starting crond: [ OK ] [root@MyCloudServer xxx]# service crond status crond (pid 26291) is running... [root@MyCloudServer xxx]# ps -ef | grep cron root 26291 1 0 10:06 ? 00:00:00 crond root 26302 22992 0 10:06 pts/3 00:00:00 grep cron
/sbin/service crond start注意也加上了/sbin目录
[root@MyCloudServer xxx]# cat ntpdate.log 29 Dec 11:10:16 ntpdate[29960]: no server suitable for synchronization found发现服务器没有找到对应的服务同步,那么猜想应该是time.windows.com服务器在本台服务器上没有获取成功,由于我们用的是香港的云服务器,那么换一个香港认可的地址试试
0,10,20,30,40,50 * * * * /usr/sbin/ntpdate stdtime.gov.hk &>/xxx/ntpdate.log然后等到整时分钟的时候再次查看一下
[root@MyCloudServer xxx]# cat ntpdate.log 29 Dec 11:20:01 ntpdate[30580]: adjust time server 118.143.17.82 offset 0.015206 sec可以看到执行成功了
总结:通过以上问题调查,发现无论什么时候经验主义并不可靠,小小的一个问题都可能引发很多原因。