crontab自動執行時間設置帶來的鬱悶

  crontab是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是相似使用者的時程表。在web開發時也常常用到crontab去定時執行某些程序進行某些操做。昨天寫了個PHP程序天天0時生成一份統計數據。和日常同樣,先把程序寫完了,執行了一下正常,又去服務器上敲crontab -e編輯。寫下:
  0 0 * * * /***/php /***/xxx.php
 
  原覺得能夠高枕無憂地睡大覺去了,誰知道0點的時候去服務器上看,發現並無生成統計數據。趕忙看crontab,看過N遍也沒有問題。接着看程序,原來程序並未指定程序目錄。PHP在作crontab的時候,須要先用chdir()函數指定程序的目錄,至於爲何,我也說不清楚。總之沒有就會出現找不到指定目錄的狀況。修改完程序又改crontab,當時服務器上的時間是0:10分,我就把crontab的時間設置改爲:
  11 0 * * * /***/php /***/xxx.php
 
  原覺得此次能夠正常生成了,結果一會發現仍然沒有。趕忙再去看程序,路徑都對。又寫了個特別簡單的小程序去測試。結果發現仍然沒有出現想要的結果。又去查看服務器上的目錄權限,也沒有問題。
 
  今天早上,又鬱悶了許久,這種狀況直到我看錯時間的那一刻才結束。我把crontab的時間多設置了幾分鐘。本沒報太大但願,結果驚喜地發現竟然成功了,又測試了幾回,也沒問題。最後總結出了一個經驗,crontab的時間設置須要至少和如今的時間相差2秒以上,若是設置當前時間的下一秒,crontab是不會執行程序的,只有等到下次時間知足條件纔會執行程序。
相關文章
相關標籤/搜索