Saya menjalankan skrip shell saya di bawah pada mesin yang c ++ server aplikasi berjalan pada port 8080 dan dalam skrip shell saya mengeksekusi URL dan menyimpan respons yang berasal dari URL itu dalam variabel DATA.
Tetapi anggaplah jika server aplikasi yang sama sedang down, maka itu tidak akan dapat mengeksekusi URL dan kemudian akan mencetak Retrying Again
dan tidur selama 30 detik dan kemudian jalankan url yang sama lagi.
#!/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"
Dan HOSTNAME
ini adalah nama host lokal dari server tempat saya menjalankan skrip shell saya di atas.
Pernyataan masalah:-
Sekarang yang saya coba lakukan adalah, jika server sedang down, maka akan dicetak Retrying Again
jadi setelah itu saya ingin memeriksa apakah port 8080
dibuka $HOSTNAME
atau tidak. Jika tidak, maka itu berarti server sedang down jadi saya ingin me-restart server dengan menjalankan perintah ini dan kemudian tidur selama 30 detik seperti yang ditunjukkan di atas dalam skrip shell.
/opt/app/test/start_stop.sh start
Apakah ini mungkin dilakukan di sini di skrip shell saya di atas?
Saya menjalankan skrip shell ini di Ubuntu 12.04.
lsof -i :8080 -sTCP:LISTEN
dan saya tidak mendapatkan apa-apa di konsol tetapi jika saya mencoba ininetstat -tulpn | grep :8080
maka saya mendapatkan proses saya yang berjalan pada port 8080 mengapa begitu?