1

ステータスが実行されているかどうかの出力をpidを介して取得しようとしています。スクリプトに以下を追加すると、最初のエコーのみが出力されます。プロセスが強制終了されたかどうか。私は最初に何が欠けていますか?

  status() {         
          if [  'ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep' ]; 
               echo -e $"$SERVICE1 is currently running \n "
          else
               echo -e $"$SERVICE1 is not running \n "
               RETVAL=$?
               echo
          fi
          fi
          return $RETVAL
  }
4

1 に答える 1

1

[is コマンドは、必要な end を持つ「test」コマンドのエイリアスです]。bashのifステートメントは、コマンドの終了ステータスをテストします。あなたの場合、テストを使用するのではなく、パイプラインの終了ステータスをテストしたいと考えています。

if ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep; then
   ...
fi

ps通常、この方法での出力を解析する必要はありません。代わりに、利用pgrep可能な場合は次を使用します。

if pgrep -f "$APPLICATION.*$SERVICE1"; then
   ...
fi
于 2012-06-29T19:54:12.883 に答える