crontab不能成功執行shell指令碼的可能原因
crond程序不存在,該程序是crontab的守護程序,它必須存在才能讓crontab正常使用;
系統時間不對;
環境變數的問題:crontab執行指令碼的時候不會讀取使用者的環境變數等配置,所以可能很多命令不能使用導致指令碼執行失敗;
指令碼本身的問題。
針對以上幾點,在使用crontab之前,我們應該:
檢查crond程序是否正在正常執行;
這個很少見,畢竟大多數情況我們的時間都很標準,不過要是用不熟悉的機器,最好還是date一下;
這個應該是最容易出現的問題了,針對這種問題:
a. 在編寫shell指令碼的時候盡量用絕對路徑使用命令;
b. 在指令碼開頭export一下路徑(長見的命令一般在/bin,/sbin,/usr/bin,/usr/sbin這幾個路徑下,所以不妨全部export一下:
export path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export lang=en_us.utf-8
如果不全部export的話,記得把使用到的命令which一下以確定命令的真實路徑;
c. 使用指令碼呼叫別的指令碼,比如有三個指令碼:run1.sh,run2.sh,run3.sh,假設這三個指令碼都使用了cat、grep等命令,那麼它們直接放在crontab中是不會被成功執行的,這時候我們可以寫個run.sh,在run.sh中呼叫run1.sh,run2.sh,run3.sh,這樣就不需要考慮export環境變數的問題,因為run.sh並沒有使用系統命令,而run.sh呼叫run1.sh的時候已經不是crontab在管理了,所以會讀取使用者的環境變數。
拉出去槍斃吧,只能自己檢查問題了,可以先手動執行一次,如果成功執行再考慮crontab相關的問題,不然諸如沒有+x就放進crontab的問題肯定是不該的。 crontab執行指令碼出錯
最近經常碰到關於crontab不能執行的,初步總結了有以下幾個原因 第一,指令碼的原因 大多數情況下,是我們的指令碼的問題,這種問題導致crontab不能執行的概率佔到70 以上。因為程式執行到某一步導致crontab終止執行,如,資料庫訪問出錯等。第二,執行環境問題,當我們碰到第一情況下,一般都可...
crontab計畫執行指令碼詳解
crontab是linux系統中在固定時間執行某乙個程式的工具,類似於windows系統中的任務計畫程式。一 安裝crontab yum install vixie cron 安裝 chkconfig crond on 設為開機啟動,安裝chkconfig yum installchkconfig ...
crontab 執行指令碼注意的問題
bin bash filepath cd dirname 0 pwd filename excute pro cd pid ps ef grep filename grep v grep awk pidnum echo pid wc awk export ld library path lib us...