这是我创建了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作为条目。
感谢。
答案 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无济于事,因为在第一轮删除文件后,其余的实际上是无操作。