每5小时杀死和启动程序的Shell脚本

时间:2015-03-31 22:01:33

标签: linux shell

我有一个覆盆子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小时通过.cronjob运行一次shellcript)

提前致谢!

1 个答案:

答案 0 :(得分:0)

通过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应用程序,或者适用于倾向于产生其他进程的应用程序。如果你试试这个,请注意僵尸。

另外,如果有人知道更好的方法,请分享。现在我很好奇。