Cron作业没有运行jar

时间:2016-05-15 07:01:45

标签: java cron

这是我创建了Delete.jar

的Java文件
import java.io.*;

public class Delete {
 public static void main(String[] args)
    {
        try{
            int i =1;
            while(i<5){
                File directory = new File("downloads");
                System.out.println("I am running");
                for(File file: directory.listFiles()) file.delete();
                i++;
             }
        }catch(Exception e){

                e.printStackTrace();

        }

    }
}

这是我运行jar文件的脚本,如果它没有运行

#!/bin/bash
processid=`pgrep -f 'Delete.jar high'`
echo "Processes:"$processid
if [ -n "$processid" ]
then
echo "Process is running. No action will be taken"
else
echo "Process is not running. Executing ResponseHandler-fast now !"
cd /home/ubuntu/;
java -jar Delete.jar high
fi

这是我添加到我的crontab -e

的行
* * * * * sh /home/ubuntu/check.sh

我重启了我的系统我希望我的脚本会运行检查jar没有运行它会运行它但它没有这样做。 我在这里做错了什么。

如果我在2-3分钟后执行ps仍然没有将java作为条目。

感谢。

3 个答案:

答案 0 :(得分:2)

请将shell脚本的输出发送到日志文件,如下所示(更改crontab条目):

* * * * * sh /home/ubuntu/check.sh >> /home/ubuntu/output.log 2>&1

通过这种方式,您将知道究竟是什么运行,然后找到确切的原因将变得更容易。

答案 1 :(得分:1)

您是否尝试手动运行/home/ubuntu/check.sh?可能是它没有找到jar文件甚至是java程序。

答案 2 :(得分:1)

Cron并没有神奇地让程序“永远运行”。手动启动程序。它可能需要1-2秒才能运行,然后退出。这正是与cron一起运行时会发生的情况。因此,除非你在程序启动时运行ps,否则你不会在进程列表中看到任何内容。

你的循环1..5无济于事,因为在第一轮删除文件后,其余的实际上是无操作。