上週在公司寫了一個crontab任務,發現沒有執行。我仔細查看了sh腳本,裏面用到的python命令以及文件,我都採用了全路徑。我直接在命令行下跑這個sh腳本,是能正常使用的。html
爲何會這樣呢?python
同事提醒我,多是權限問題,因而我對腳本涉及到的文件都chmod 777一下,而後把crontab任務的時間改爲下一分鐘...結果,腳本仍是沒有起來。測試
後面經過google瞭解到:google
每次編輯完某個用戶的cron設置後,cron自動在/var/spool/cron下生成一個與此用戶同名的文件,此用戶的cron信息都記錄在這個文件中,這個文件是不能夠直接編輯的,只能夠用crontab -e 來編輯。cron啓動後每過一份鍾讀一次這個文件,檢查是否要執行裏面的命令。引用於:http://www.cnblogs.com/cosiray/archive/2012/03/09/2387361.html
這告訴我,測試crontab時,不該該把跑腳本的時間設置成離如今1分鐘之內。也就是說,如今若是是14:24分,你設置cronbtab14:25跑,編輯完crontab後,cron尚未來得更新咱們剛纔編輯文件,也就致使任務沒有執行了。
spa
我把任務的啓動時間從新設置後,crontab任務就正常啓動了。命令行
總結一下,crontab任務沒有啓動的可能緣由:orm
crontab的環境變量和控制檯是不一樣的,好比控制檯能直接找到python命令,而到了crontab下,要寫python安裝的全路徑。htm
保證腳本文件在crontab下有權限運行。blog
測試crontab時,可能因爲啓動時間設置不正確,而致使crontab錯過執行的時機。建議測試時,把啓動的時間設置成2分鐘後。
crontab