web-dev-qa-db-ja.com

JBossがUnixサーバーで実行されているかどうかを確認する方法は?

プロセスリストでjbossプロセスを見つけることができるかどうかに応じて、「jboss not running」または「jboss is running」をエコー出力するスクリプトを以下に示します。ただし、Jbossをシャットダウンしても、Else条件が実行され、「jboss is running」と表示されます。 「pgrep -f jboss」を手動で実行しても何も返されないのに、なぜElse状態になるのですか? 困惑

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

ご協力いただきありがとうございます!

12
user1060096

出力を確認する代わりに、次のコマンドを使用します。

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

コマンドのexit statusを使用してみてください-

#!/bin/bash

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

プロセス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 
2
bushiebear
#! /bin/bash
 if [ -z "$(ps -ef | grep org.jboss.Main)" ]
then 
 echo "jboss is not running"
else
  echo "jboss is running"
fi
1
RAJKUMAR.B

これが最良の方法です:

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

以下の関数を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)

jpsgrepを実行しますjbossを使用した行、cut the [〜#〜] pid [〜#〜]行から、PIDを確認します。

0
Rostislav Matl

最良の方法はこれを使用することです

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" 
0
Raghu K Nair