通过crontab在unix中安排一份工作

时间:2014-10-10 06:16:37

标签: java shell unix ubuntu cron

我创建了一个简单的java程序,用于打印" Hello world"。代码如下

public class Hello {

    public static void main(String[] args) {

        System.out.println("Hello world!");
    }

}

已经编译了类,它位于同一目录中。 在同一目录中,我创建了一个名为temp.sh的shell文件,其中包含命令

java Hello

现在如果我执行这个shell文件,那么java程序正在成功执行。 我写了一个cronjob来每分钟执行一次

* * * * * /home/ashutosh/Documents/javaPractice/temp.sh >> /var/log/myjob.log 2>&1

现在在我的日志中显示

could not load main class java 

我不知道问题是什么。我试过通过给出java文件的绝对路径,但没有任何帮助。帮助我。

谢谢

5 个答案:

答案 0 :(得分:1)

在temp.sh内部尝试使用完整路径:

java /home/ashutosh/Documents/javaPractice/Hello

答案 1 :(得分:1)

您的问题是crontab的工作目录不是您的类所在的目录。因此,在脚本中添加cd the_right_directory或使用java -cp some_directory Hello

之类的内容更改java的类路径

答案 2 :(得分:0)

使用java -cp ./ Hello来运行该程序。 -cp ./将当前目录添加到类路径中。

答案 3 :(得分:0)

答案 4 :(得分:0)

您应该在脚本文件中设置环境变量,例如CLASSPATH。或者在运行脚本之前先输入.profile。请参阅https://unix.stackexchange.com/questions/27289/how-can-i-run-a-cron-command-with-existing-environmental-variables