最近遇到了一些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/cshjava
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 15linux
./startup.sh &tomcat
通常狀況下須要修改環境變量配置bash
改統一
測試
vi ~/.bash_profilespa