testjob.sh
#!/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作业运行时,会在找不到类时发生错误..
请建议..
答案 0 :(得分: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 :(得分:1)
您的类路径设置为“。”和“..”,表示当前目录及其父目录。因此,当您在本地运行它时,您必须位于特定目录中才能使其正常工作。
尝试将类路径设置为脚本中的绝对目录。
要检查哪个目录是当前目录,您可能还想放置
echo "Current directory: `pwd`"
进入testjob.sh
脚本,以说明“手动”和通过crontab调用时的差异。