為什麼在crontab中使用ntpdate同步時間無效
在一台 VirtualBox 上安裝的 CentOS 5.8 系統上,時間不准確,一天能差上好幾個小時,每次測試與時間相關的程序時,總得先去調整時間。於是在crontab中設置了一個定時任務:(crontab -e)
www.2cto.com
# 時間同步
0,10,20,30,40,50 * * * * ntpdate time.windows.com
過了一陣,發現時間並沒有同步,而單獨執行命令就可以。讓命令執行結果輸出到文件中試試:
# 時間同步
0,10,20,30,40,50 * * * * ntpdate time.windows.com &>/var/log/ntpdate.log
又過了一陣,發現時間還是不准確。看了一下 /var/log/ntpdate.log,如下:
/bin/sh: ntpdate: command not found
在shell中直接執行,就不會有找不到命令的問題,使用全路徑來執行命令應該就可以了。先找到 ntpdate 的確切路徑:
[root@node18 ~]# whereis ntpdate
ntpdate: /sbin/ntpdate /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
用 crontab -e 修改任務:
# 時間同步
#0,10,20,30,40,50 * * * * ntpdate time.windows.com &>/var/log/ntpdate.log
0,10,20,30,40,50 * * * * /sbin/ntpdate time.windows.com &>/var/log/ntpdate.log
保存 www.2cto.com
crontab: installing new crontab
[root@node18 ~]#
[root@node18 ~]#
[root@node18 ~]# date
2012年 07月 29日 星期日 02:48:13 CST
[root@node18 ~]# date
2012年 07月 29日 星期日 02:48:49 CST
[root@node18 ~]# date
2012年 07月 29日 星期日 02:49:46 CST
[root@node18 ~]# date
2012年 07月 30日 星期一 09:27:37 CST
時間同步了。
[root@node18 ~]# cat /var/log/ntpdate.log
30 Jul 09:26:33 ntpdate[6928]: step time server 65.55.21.19 offset 110191.229893 sec
總結兩點:
(1)在 crontab 中設置了任務,要進行確認;
(2)crontab 中的命令盡量使用完整路徑,避免執行時找不到。
作者 codingstandards