2012-01-06 10 views
9

私はプロセスリストでjbossプロセスを見つけることができるかどうかに応じて、 "jboss not running"または "jboss is running"をエコーアウトしたいというスクリプトがあります。しかし、Jbossをシャットダウンすると、Else条件が実行され、 "jbossが実行中"と表示されます。私が手動で "pgrep -f jboss"を実行した場合、何も返されないので、なぜそれでもElse条件に入りますか? はあなたの助けJBossがUnixサーバー上で動作しているかどうかを確認する方法は?

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

感謝を困惑しました!それあなたとラインのグレップ

答えて

0

実行JPSは、JBOSS がラインからPIDをカットし、PIDを確認してください。

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 
12

代わりに出力をチェックするだけのコマンドを使用します。

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

あなたはそのようにJBossのチェック傾けます。 Jbossはログを記録するのに1〜2分かかることがあるので、 あなたのスクリプトは「Jbossが本当にUPしている」というわけではなく、Jbossのプロセスだけを表示します(JBossのアプリケーションを意味します)。

+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 
にこれを使用しています。彼のチェックがjbossを監視するのに十分でない理由を説明しただけです。 – itsbruce

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

これが最善の方法である:

if [ -z "$(ps -ef | grep java | grep jboss)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
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 
0

最良の方法は、あなたが彼の質問に答えていないあなたは、EARまたはWARファイルが展開されているかどうかを確認したい場合は、次のコマンド

$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE" 
関連する問題