如何检查JBoss是否在Unix服务器上运行?

时间:2012-01-06 16:53:32

标签: linux unix service process jboss

我有一个脚本,我想回应“jboss not running”或“jboss正在运行”,具体取决于它是否可以在进程列表中找到jboss进程。但是,当我关闭Jboss时,它仍然执行Else条件并说“jboss正在运行”。如果我手动执行“pgrep -f jboss”它不返回任何内容,那为什么它仍然会进入Else条件? 不解

#!/bin/bash
if [ -z "$(pgrep -f jboss)" ]
  then
  echo "jboss is not running"
else
  echo "jboss is running"
fi 

感谢您的帮助!

9 个答案:

答案 0 :(得分:17)

不要检查输出,只需使用命令:

if pgrep -f jboss >/dev/null
  then
  echo "jboss is running"
else
  echo "jboss is not running"
fi 

答案 1 :(得分:3)

尝试使用命令的exit status -

#!/bin/bash

pgrep -f jboss &> /dev/null
if [ $? -eq 0 ]
  then
  echo "jboss is running"
else
  echo "jboss is not running"
fi

答案 2 :(得分:2)

获取进程ID JBoss 7 / EAP 6:

pgrep -f org.jboss.as

所以如果你想用这个增强前面的例子脚本:

if [ -z "$(pgrep -f org.jboss.as)" ]
then 
 echo "JBoss is NOT running"
else
  echo "JBoss is running"
fi 

答案 3 :(得分:1)

#! /bin/bash
 if [ -z "$(ps -ef | grep org.jboss.Main)" ]
then 
 echo "jboss is not running"
else
  echo "jboss is running"
fi

答案 4 :(得分:1)

这是最好的方法:

if [ -z "$(ps -ef | grep java | grep jboss)" ]
then 
 echo "JBoss is NOT running"
else
  echo "JBoss is running"
fi

答案 5 :(得分:0)

运行 jps grep 为您的行jboss,剪切 PID 来自该行检查PID。

答案 6 :(得分:0)

最好的方法是使用此

result=`$jboss/bin/jboss-cli.sh --connect controller=localhost:$controller_port --commands=\"read-attribute server-state\" > out 2&1`
echo "$result" | grep -q "running"
if [ $? -eq 0 ];then 
   echo "Jboss running"
fi

如果要检查是否部署了ear或war文件,则可以使用以下命令

$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT  --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE" 

答案 7 :(得分:0)

您可以在bash脚本中使用以下功能;如果尚未启动Jboss,则下面的函数将返回Jboss的PID。注意$ 1是jboss的基本目录。例如: $ 1 = / root / app / wildfly-X.Final

function getJbossPID() {
local pid;
local DIR=$1;
if [[ ! -z $DIR ]]; then
    local result=();
    jps=`jps -m`
    if [[ ! -z $jps ]]; then
        IFS='
        '
        jps_result=`jps -m`
        for jps_line_result in $jps_result; do
            result_jps=$jps_line_result;
            if [[ $result_jps == *$DIR* ]]; then
                unset IFS
                array=( $result_jps );
                pid=${array[0]};
            fi
        IFS='
        '
        done;
        unset IFS;
    fi
fi
echo $pid;
}

您可以使用与以下相同的功能:

  

PID = $(getJbossPID $ YOUR_JBOSS)

答案 8 :(得分:-2)

你不能以这种方式检查jboss。 因为Jboss有时开始记录1-2分钟。 所以你的脚本只显示进程Jboss,而不是“Jboss is up UP”(我的意思是JBoss上的应用程序)。