今天寫了一個nginx日志分割的簡單腳本,發現手動執行腳本可以將日志成功分割,但是使用crontab定時任務就會執行失敗。
然后自己寫了一個只有一句話的shell腳本,發現一樣的問題,然后就開始根據問題找原因:
1:是不是crontab的權限不對。然后使用了 ls /etc/init.d/crontab -lh 查看權限。發現用戶組的對的,root組。
2:網上說很大可能的原因是環境變量的問題,然后,自己輸出了PATH的所有環境變量,然后加入到腳本開頭第二行的位置,依然不行。
3:查看crontab的執行狀態。/etc/init.d/cron status 發現定時在執行。
4:定時不使用腳本,直接在定時后面直接寫命令。發現是可以執行的,這就有點怪了。
手動執行腳本沒問題,定時執行腳本有問題。定時執行腳本命令沒問題。這是哪里出了問題呢?這說明腳本的白那些是沒有問題的,問題處在了crontab定時上,然后加了環境變量的的文件絕對路徑,抱着試一試的心態,結果真的成功了。具體操作如下:
*/1 * * * * /etc/profile /bin/sh path/test.sh
/etc/profile是加的環境變量的文件。