プロセスリストで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
ご協力いただきありがとうございます!
出力を確認する代わりに、次のコマンドを使用します。
if pgrep -f jboss >/dev/null
then
echo "jboss is running"
else
echo "jboss is not running"
fi
コマンドのexit status
を使用してみてください-
#!/bin/bash
pgrep -f jboss &> /dev/null
if [ $? -eq 0 ]
then
echo "jboss is running"
else
echo "jboss is not running"
fi
プロセス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
#! /bin/bash
if [ -z "$(ps -ef | grep org.jboss.Main)" ]
then
echo "jboss is not running"
else
echo "jboss is running"
fi
これが最良の方法です:
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)
jps、grepを実行しますjbossを使用した行、cut the [〜#〜] pid [〜#〜]行から、PIDを確認します。
最良の方法はこれを使用することです
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"