我在週一至週五的營業時間之間每分鐘都會運行一個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工作經歷過這種事情,或者對此有何看法?任何援助將不勝感激。提前致謝!
也許你的腳本中有相對路徑,如果你嘗試'/ var/lib/tomcat7/webapps/sh/test.sh'它工作嗎? – Duffydake 2014-11-26 11:17:28
嗨Duffydake。您的權利,我正在嘗試執行的腳本中存在相對路徑。腳本開始移動到我的java代碼所在的目錄 – tasslebear 2014-11-26 11:54:23
道歉,我不打算很快就回來。第一行讀取「cd ../java/JProject/src」,然後繼續編譯並在腳本的其餘部分運行java。這可能是它沒有從cron運行的原因嗎? – tasslebear 2014-11-26 11:56:13