crontab不适用于运行java类

时间:2011-11-02 11:35:34

标签: java linux crontab

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作业运行时,会在找不到类时发生错误..

请建议..

2 个答案:

答案 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调用时的差异。