我有一个树莓pi,我想启动一个java应用程序5个小时,杀死它,然后重新启动它。
因为我需要通过ssh登录,所以我认为在屏幕上运行java应用程序是明智的(因为我想在程序运行时做其他事情)。
所以没有剧本我就开始了:
screen -S java
java -jar program.jar
然后我发送[ctrl]+[a]+[d]键来分离。
现在我需要用shell来写。
我从:
#!/bin/bash
#Check if app runs right now
OUTPUT="$(screen -ls)"
if [[ $OUTPUT == *"javaapp"* ]]
then
#Say that the javaapp is currently running
echo "javaapp is up!";
#Kill the javaapp!
screen -d javaapp #Does not work
fi
#Start it again
但它不起作用:/
我甚至不知道该如何修复它,因为这是我第一个要写的脚本。有人能帮我吗?
(哦:我会每隔5个小时运行一次shellscript。克龙作业)
提前谢谢!
最佳答案
通过cron试试这个技巧:
#!/bin/bash
if [[ -f /opt/javaapp.pid ]]
kill -9 `cat /opt/javaapp.pid`
rm /opt/javaapp.pid
fi
nohup java -jar program.jar > /opt/javaapp.log 2>&1&
echo $! > /opt/javaapp.pid
编辑:我不确定它是否适用于Java应用程序,或者是倾向于分叉和派生其他进程的应用程序。如果你试试看,小心僵尸。
另外,如果有人知道更好的方法,请分享。现在我很好奇。