使用crontab 新增一個定時任務
* * * * /bin/bash -l -c ' ~/.script.sh'
這個腳本的作用是統計一些資料並產生報表檔.
這個腳本每分鐘執行一次,但是實際操作中crontab並沒有像預期的那樣產生報表檔.
然而當我手動執行這個命令時 "~/.script.sh" 生成檔並退出.
有兩個疑問:
1: 為什麼crontab 沒有執行我的腳本. 查看了crontab 日誌(/var/log/crond)輸出: 美 5 20:36:01 localhost CROND[27260]: (ernest) CMD (/bin/bash -l -c '~/script.sh') 沒有發現任何異常.
2: 會不會是我執行腳本的環境 不一樣呢? 測試了一下 "* * * * * /bin/bash -l -c 'source ~/.bash_profile && ~/.script.sh'" 也不行.
各位大牛們有沒有遇到跟我一樣的問題呢?
手動運行腳本生效,crontab不生效最最最最最最最最最最常見的原因是: 你在腳本裡面的指令沒有使用絕對路徑。
用絕對路徑試試.因為
~
对不同的用户会解释成不同的$HOME
.一般是在
script.sh
裡面最開始的地方加上如果你是 sudo crontab -e 建立的crontab指令,那麼執行的使用者是root, 這裡的~也會被解析為/root 如果你沒有用sudo,那應該沒問題。
雷雷
有可能是檔案權限問題?