對於crontab定時任務不能自動執行的總結


最近遇到了一些sh不能在crontab定時任務中自動執行的問題
期間由於不太了解,故走了一點彎路,現在總結下來可能第一次
進行設置遇到的問題。以絕后患!我所用過的操作系統為HP-unix&linux&sco-unix,均測試通過
1,首先確保sh腳本具有可執行屬性
即chmod +x  ***.sh
或chmod +777 ***.sh
2,確保sh腳本手工執行正常
即在當前系統內手工執行sh腳本以后能收到自己期望得到的結果
3,加載環境變量
這個問題是經常容易被忽略的問題,通常我們在第二步的時候手動執行腳本能得到自己想要的結果,可是設置好crontab之后,總不能得到自己想要的結果, 總感覺腳本沒有被執行。或者執行后沒有得到正常的結果。很多均是由於沒有加載所在用戶的環境變量所引起的。因此最好在自己的腳本首兩行添加環境變量的導 入。如下:其中telstar是我在操作系統下所在的用戶。在該目錄下執行ls -a可以查看到.cshrc文件。我們在自己的sh腳本中增加source 該文件,將本用戶的環境變量加載,那么以下的內容就能正常被執行了
#!/bin/csh#source /telstar/.cshrc
下面貼出我的定時重啟tomcat的一個例子
#!/bin/csh

source /telstar/.cshrckill -9 `ps -ef | grep Djava.uti | grep -v tail | grep -v vi | grep -v grep | awk '{print $2}'`cd /telstar/tomcat/binsleep 15./startup.sh &
其實這里不加載環境變量的話,sh前加上絕對路徑,應該也可以,這個沒有測試,有興趣的朋友可以嘗試一下
#!/bin/csh
source /telstar/.cshrc
kill -9 `ps -ef | grep Djava.uti | grep -v tail | grep -v vi | grep -v grep | awk '{print $2}'`
sleep 15
/telstar/tomcat/bin./startup.sh &

總之很多手動能正常執行的sh,crontab不能執行大多數情況是由於沒有加載環境變量引起的,這里貼出來,以絕后患
#!/bin/csh
source /telstar/.cshrc
kill -9 `ps -ef | grep Djava.uti | grep -v tail | grep -v vi | grep -v grep | awk '{print $2}'`
cd /telstar/tomcat/bin
sleep 15

./startup.sh &


一般情況下需要修改環境變量配置

改統一

vi ~/.bash_profile


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM