2012-07-18 92 views
1

我不知道爲什麼我的cronjob沒有執行。這裏是詳細信息:Cronjob在Debian上失敗

我在/ usr/src裏面有一個名爲stundenplan.sh的腳本,它執行一個jar文件。 如果您從控制檯運行腳本,腳本本身也可以運行。 但試圖從一個cronjob運行它不起作用。

腳本是這樣的:

#!/bin/sh 
java -jar vorlesungsplaene.jar 

的JAR文件位於同一目錄中的預期。

我定義了兩個cronjobs:

# m h dom mon dow command 
    30 * * * * /usr/src/stundenplan.sh 
0-59 * * * * echo "dude" >> /tmp/test.txt 

作業以下工作正常,在test.txt文件寫入 「花花公子」 一絲不苟。

正如你可以在系統日誌看到,工作上面的失敗:

Jul 18 15:29:01 vps47327 /USR/SBIN/CRON[16361]: (root) CMD (echo "dude" >> /tmp/test.txt) 
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16364]: (root) CMD (/usr/src/stundenplan.sh) 
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16365]: (root) CMD (echo "dude" >> /tmp/test.txt) 
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16363]: (CRON) error (grandchild #16364 failed with exit status 1) 

任何建議,意見或解決方案? ;)

+0

可能java不在路徑中; (或其他一些環境變量缺失)。嘗試設置明確需要instundenplan.sh的所有內容。 (也許通過採購.profile或其他點文件)您可以通過在stundenplan.sh中放置'set >>/tmp/test.txt'來測試環境。BTW是stundanplan.sh可執行文件嗎? (chmod 755 stundenplan.sh) – wildplasser 2012-07-18 15:36:10

回答

5

它看起來像一個路徑問題。 Crontab可能正在從某個任意目錄運行,因此無法找到該jar文件。

嘗試做:

30 * * * * cd /usr/src && ./stundenplan.sh

這不是真正去了解它的最漂亮的方式,但如果成功,那麼至少你知道是什麼問題。可能將腳本文件的完整路徑放在腳本中可能更優雅,但我會將這個問題留給您。 :)

希望它有幫助!

+0

這實際上工作。謝謝! – 2012-07-18 16:16:15

+0

我試圖在PATH變量中包含該目錄,它不起作用。然而,你的解決方案完美地工作... – sri 2014-08-19 08:32:33

+1

@sri 然後我發現它可能是stundenplan.sh腳本正在訪問文件,假設它正在從它自己的目錄運行。在一個完美的世界裏,腳本不會那麼做,但是這很常見,特別是在shell腳本中。 – Teekin 2014-08-22 14:18:55

相關問題