スクリプトを実行してファイルに出力する関数を作成しています。これが発生すると、ファイルを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
停止コマンドを発行する必要がありますか?