while ループは JBoss 状態がダウンしていることを確認し、エラーを発生させます。

while ループは JBoss 状態がダウンしていることを確認し、エラーを発生させます。

次のコードの目的は、JBossの状態を確認することです。 whileループは、JBoss状態が「DOWN」状態に達するまで繰り返されます。 `スクリプトの実際のパスの代わりに使用できるように適切な環境変数に設定し、スクリプトがあります。

$ JBOSS_ROOT=/opt/app/jboss/jboss.sh
スクリプト
time=1
while  [ $JBOSS_ROOT status | egrep -nq "DOWN"  ]
  do
        echo "JBoss stooping, please wait ......."
        sleep 1m
        if [ $time -gt 6 ]
         then
            echo "Something went wrong.. it's been running more than 5 \
                minutes, please check JBoos server log and deployments"
            exit
        fi

        time=$(expr "$time" + 1)
  done

echo "JBoss stopped"
`
  • $JBOSS_ROOT statusJBossが下(停止位置)にある場合は、「JBoss DOWN」が返されます。
  • $JBOSS_ROOT statusJBossが実行されている場合(開始位置)、「JBoss(pid:32627)is RUNNING」を返します。

whileループでエラーが発生します。言う./stop.sh: line 5: [: missing] ''。

答え1

形式が正しくありません。この試み:

while  $JBOSS_ROOT status | grep -Enq "DOWN" 
do
    ...
done

ここでは必要ではなく、[ ]動作しません。これはテストにのみ使用されます。

関連情報