BASH内で実行されているスクリプトの応答をキャプチャして使用してみてください。

BASH内で実行されているスクリプトの応答をキャプチャして使用してみてください。

スクリプトを実行してファイルに出力する関数を作成しています。これが発生すると、ファイルを1行ずつ読み込み、実行を停止します。サーバーが起動に失敗した場合は、-9 $ pidを終了するif条件を追加したいと思います。動作しません。

function stop_server() {
     su -s /bin/bash user /usr/local/server/bin/server list | sed "1,2 d" >>jvms
     while IFS="" read -r p || [ -n "$p" ]
     do
         su -s /bin/bash user /usr/local/server/bin/server stop $p
         if [[ $(su -s /bin/bash user /usr/local/server/bin/server stop $p)= 'Server $p stop failed. Check server logs for details.' ]];
         then
               PID="ps -ef|grep -v grep |grep '$p' | awk '{print $2}'"
               kill -9 $PID
         fi
     done
}

サーバーが$ pを停止した結果をキャプチャしたいのですが、次のようにできると思いました。

      if [ $results = 'Server $p stop failed. Check server logs for details.' ]; then
         PID="ps -ef|grep -v grep |grep '$p' | awk '{print $2}'"
         kill -9 $PID
      fi

答え1

欲しい

 PID=$(ps -ef|grep -v grep |grep '$p' | awk '{print $2}')

ただし、IMHOはより直接的な方法でプロセスのPIDを取得する方法を見つける必要があります。 ".pid"ファイルをどこかに残しませんか?su停止コマンドを発行する必要がありますか?

関連情報