我需要创建一个SSH BASH脚本(在Debian linux上)来测试'java'进程是否正在运行。
这里应该是这样的:
IF 'java' process is not running THEN run ./start.sh
测试java进程是否正在运行,我可以进行此测试:
ps -A | grep java
这个脚本应该每分钟运行一次(我猜在CRON中)
此致
答案 0 :(得分:2)
首先,要在cron中每分钟运行一个作业,你的crontab应该是这样的:
* * * * * /path/to/script.sh
接下来,您可以使用几种不同的方法来检测Java进程。
请注意,以下每项都是否定:它们检测到Java的缺席:
使用pgrep
:
if [ ! $(pgrep java) ] ; then
# no java running
fi
使用pidof
:
if [ ! $(pidof java) ] ; then
# no java running
fi
使用ps
和grep
:
if [ ! $(ps -A | grep 'java') ] ; then
# no java running
fi
其中,pgrep
和pidof
可能效率最高。不过,不要引用我的话。
答案 1 :(得分:1)
你在PS和GREP上做的检查看起来不是很详细。如果其他Java进程正在运行怎么办?您可能会检测到这些并得出错误的结论,因为您只是检查“任何”Java,而不是某些特定的Java。
答案 2 :(得分:0)
使用pidof
会是这样的:
<强> script.sh 强>
pidof java;
if[$? -ne 0];
then
# here put your code when errorcode of `pidof` wasn't 0, means that it didn't find process
# for example: /home/user/start.sh
# (please don't forget to use full paths if you want to use it in cron)
fi
特别是对仇恨者:
man pidof
:
退出状态
0 At least one program was found with the requested name. 1 No program was found with the requested name.