SSH bash脚本来测试java进程是否正在运行?

时间:2014-11-29 13:51:58

标签: linux bash shell

我需要创建一个SSH BASH脚本(在Debian linux上)来测试'java'进程是否正在运行。

这里应该是这样的:

IF 'java' process is not running  THEN run ./start.sh

测试java进程是否正在运行,我可以进行此测试:

ps -A | grep java

这个脚本应该每分钟运行一次(我猜在CRON中)

此致

3 个答案:

答案 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
    
  • 使用psgrep

    if [ ! $(ps -A | grep 'java') ] ; then
      # no java running
    fi
    

其中,pgreppidof可能效率最高。不过,不要引用我的话。

答案 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.