【问题标题】:crontab doesnt work for run java classcrontab 不适用于运行 java 类
【发布时间】:2011-12-20 05:57:59
【问题描述】:

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

请建议..

【问题讨论】:

    标签: java linux crontab


    【解决方案1】:

    看看这个。应该回答你的问题

    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 点引起的问题.

    【讨论】:

      【解决方案2】:

      您的类路径设置为“。”和“..”,表示当前目录和它的父目录。所以当你在本地运行它时,你必须在一个特定的目录中才能工作。

      尝试将类路径设置为脚本中的绝对目录。

      要检查哪个目录是您可能还想放置的当前目录

      echo "Current directory: `pwd`"
      

      到您的 testjob.sh 脚本中,以说明“手动”调用和通过 crontab 调用时的区别。

      【讨论】:

        猜你喜欢
        • 2015-05-28
        • 1970-01-01
        • 2017-04-24
        • 2014-07-07
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 2016-10-06
        相关资源
        最近更新 更多