解決Linux的crontab沒有執行ntpdate的問題

來源:互聯網
上載者:User

解決Linux的crontab沒有執行ntpdate的問題

前言:在我們的項目中,需要同步Linux伺服器的時間,於是用到了ntpdate命令,就在crontab中進行了配置,設定為每個小時的整時分鐘進行同步,完了後就一直沒有關注,因為這很簡單,經驗主義告訴我,既然手動使用ntpdate命令就可以同步時間成功,放在cron進程(是Linux的一個守護進程,如果啟動後,會每隔一分鐘去檢查對應的crontab檔案,root使用者的在/var/spool/cron)中就更沒有問題了,然而,今天看Linux伺服器的時間後,發現和Windows時間差上了好幾分鐘,我們的Linux服務承載著期貨交易平台的定時服務,比如說,9點半開盤等等,這就意味著時間不準確啊,於是就調查解決問題,有了下面的記錄

1.使用crontab -l命令查看定時服務
[root@MyCloudServer xxx]# crontab -l0,10,20,30,40,50 * * * * ntpdate time.windows.com &>/xxx/ntpdate.log
2.看起來好像沒有問題啊,vim /var/spool/mail/root(定時服務日誌會存放在該檔案中)查看定時服務日誌,發現有如下資訊
/bin/sh: ntpdate: command not found
說明定時服務在/bin/sh目錄中去找ntpdate命令,並且沒有找到3.使用whereis ntpdate命令看看該命令在什麼目錄下
[root@MyCloudServer cron]# whereis ntpdatentpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
問題找到了,在定時服務中,ntpdate命令要使用全路徑4.使用crontab -e命令修改一下,加上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是否存在問題5.執行ps -ef | grep cron,查看時間服務進程是否存在
[root@MyCloudServer xxx]# ps -ef | grep cronroot     26157 22992  0 10:04 pts/3    00:00:00 grep cron
發現沒有cron執行進程6.執行service crond status查看服務狀態
[root@MyCloudServer xxx]# service crond statuscrond is stopped
竟然服務沒有啟動,好吧7.啟動進程,並且查看狀態
[root@MyCloudServer xxx]# service crond startStarting crond:                                            [  OK  ][root@MyCloudServer xxx]# service crond statuscrond (pid  26291) is running...[root@MyCloudServer xxx]# ps -ef | grep cronroot     26291     1  0 10:06 ?        00:00:00 crondroot     26302 22992  0 10:06 pts/3    00:00:00 grep cron
8.服務啟動了,通過vim /etc/rc.d/rc.local命令添加以下語句設定為開機啟動
/sbin/service crond start
注意也加上了/sbin目錄9.最後再看看ntpdate.log中有沒有執行日誌
[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
可以看到執行成功了

總結:通過以上問題調查,發現無論什麼時候經驗主義並不可靠,小小的一個問題都可能引發很多原因。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.