C ++アプリケーションサーバーがポート8080で実行されているマシンで以下のシェルスクリプトを実行しています。シェルスクリプトでURLを実行し、そのURLからの応答をDATA変数に格納します。
ただし、同じアプリサーバーがダウンしている場合、URLを実行できずRetrying Again
、30秒間印刷してスリープしてから同じURLを再度実行するとします。
#!/bin/bash
HOSTNAME=$hostname
DATA=""
RETRY=15
echo $HOSTNAME
while [ $RETRY -gt 0 ]
do
DATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/beat)
if [ $? -eq 0 ]
then
break
else
echo "Retrying Again" >&2
# restart the server
let RETRY-=1
sleep 30
fi
done
echo "Server is UP"
そしてHOSTNAME
、これが上記のシェルスクリプトを実行しているサーバーのローカルホスト名です。
問題文:-
今私がやろうとしていることは、サーバーがダウンしている場合、それが印刷されるRetrying Again
ので、その後、ポート8080
が開いているかどうかを確認したいです$HOSTNAME
。そうでない場合は、サーバーがダウンしていることを意味するので、このコマンドを実行してサーバーを再起動し、シェルスクリプトで上記のように30秒間スリープします。
/opt/app/test/start_stop.sh start
上記のシェルスクリプトでこれを行うことは可能ですか?
Ubuntu 12.04でこのシェルスクリプトを実行しています。
lsof -i :8080 -sTCP:LISTEN
ましたが、コンソールには何も表示されませんがnetstat -tulpn | grep :8080
、これを実行しようとすると、ポート8080で実行されているプロセスが表示されるのはなぜですか?