2014-11-25 134 views
0

我在週一至週五的營業時間之間每分鐘都會運行一個shell腳本,並認爲它運行良好,因爲我使用「crontab -l」命令時可以看到它。該腳本調用一段Java代碼來檢查postgresql表中的某些條件,如果滿足這些條件,它將寫入另一個表。該腳本位於我們的Linux服務器上的以下目錄中。Cron Job在Linux環境下不工作

/var/lib/tomcat7/webapps/sh 

因此,可以說它被稱爲「test.sh」,應我的cronjob看起來是這樣的:

* 08-18 * * 1-5 /var/lib/tomcat7/webapps/sh/test.sh 

即,它應該運行從週一的每一天的每一分鐘至週五8之間上午18:59。我只是試圖通過向postgresql表添加虛擬數據來測試它,以便另一個表應該被寫入並且什麼也沒有發生。但是,當我從命令行手動運行./test.sh它工作正常。這個問題似乎與我的克朗。如果我輸入:

grep CRON /var/log/syslog 

我可以看到它已經每分鐘運行一次。輸出看起來像這樣

Nov 25 12:38:01 webserver CRON[11868]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh) 
Nov 25 12:39:01 webserver CRON[11888]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh) 
Nov 25 12:40:01 webserver CRON[11953]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh) 
Nov 25 12:41:01 webserver CRON[11953]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh) 
Nov 25 12:42:01 webserver CRON[11985]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh) 

etc ..然而,我改變了postgresql表中的數據後,這似乎沒有任何影響。就好像腳本沒有真正運行一樣。雖然它在我從命令行手動運行時運行完美。 有沒有人曾經用cron工作經歷過這種事情,或者對此有何看法?任何援助將不勝感激。提前致謝!

+1

也許你的腳本中有相對路徑,如果你嘗試'/ var/lib/tomcat7/webapps/sh/test.sh'它工作嗎? – Duffydake 2014-11-26 11:17:28

+0

嗨Duffydake。您的權利,我正在嘗試執行的腳本中存在相對路徑。腳本開始移動到我的java代碼所在的目錄 – tasslebear 2014-11-26 11:54:23

+0

道歉,我不打算很快就回來。第一行讀取「cd ../java/JProject/src」,然後繼續編譯並在腳本的其餘部分運行java。這可能是它沒有從cron運行的原因嗎? – tasslebear 2014-11-26 11:56:13

回答

0

你的工作目錄是不是/var/lib/tomcat7/webapps/sh/當您啓動腳本/var/lib/tomcat7/webapps/sh/test.sh

你可以得到當前工作目錄中pwd命令或拿到劇本的位置(見本post然後:

cd $SCRIPTPATH 
cd ../java/JProject/sr 

更改相對路徑../java/JProject/src與絕對路徑