2011-11-02 67 views
0

testjob.sh的crontab行不通

#!/bin/bash 
export JAVA_HOME=/usr/java/jdk1.6.0_07 
echo "Java Home is $JAVA_HOME" 
export CLASSPATH=.:..:$CLASSPATH: 
echo "Path is is $PATH" 
echo "CLASSPATH is is $CLASSPATH" 
$JAVA_HOME/bin/java TestJob 
echo "$JAVA_HOME/bin/java TestJob" 

crontab -e命令

* * * * * /usr/testjob.sh >> /usr/result.txt 2>&1 

如果我運行shell腳本手動運行正常,但當它會通過運行crontab工作,錯誤將發生,因爲類沒有找到..

請建議..

回答

3

看看這個。要回答你的問題

Where can I set environment variables that crontab will use?

請再次閱讀本http://linuxshellaccount.blogspot.com/2007/10/crontab-and-your-environment.html \

,你可以確保你在cron同一環境中的最簡單的方法,你作爲普通用戶是「運行任何腳本時通過添加如下線來將「環境源」添加到腳本中:

。/etc/profile 。 /home/user/.profile

到腳本的頂部(在#!行下面)。文字的點號,空格,文件名模式告訴你的shell讀取該文件中的所有變量,這樣你就可以在手動測試時使用相同的環境運行你的cron作業,這可以避免上述第1點和第2點引起的問題。

1

您的類路徑設置爲「。」和「..」,表示當前目錄和它的父目錄。所以當你在本地運行它時,你必須在特定的目錄中才能正常工作。

嘗試將類路徑設置爲腳本中的絕對目錄。

要檢查哪個目錄是當前目錄也可以把它放到

echo "Current directory: `pwd`" 

到您testjob.sh腳本調用「手動」,並通過crontab的時候說明的差異。