Aşağıdaki kabuk betiğimi, c ++ uygulama sunucusunun 8080 numaralı bağlantı noktasında çalıştığı bir makinede ve kabuk betiğinde bir URL yürütüyorum ve bu URL'den gelen yanıtı DATA değişkeninde saklıyorum.
Ancak, aynı uygulama sunucusunun kapalı olması durumunda, URL’yi çalıştıramayacağını ve ardından Retrying Again30 saniye boyunca yazdırıp uyuyacağını ve aynı URL’yi tekrar çalıştırdığını varsayalım .
#!/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"
Ve işte HOSTNAMEyukarıdaki kabuk betiğimi çalıştığım sunucunun yerel ana bilgisayar adı.
Sorun bildirimi:-
Şimdi yapmaya çalıştığım şey, sunucu kapalıysa, o zaman yazdırılacak ve Retrying Againbundan sonra bağlantı noktasının 8080açılıp açılmadığını kontrol etmek istiyorum $HOSTNAME. Eğer değilse, o zaman sunucu kapalı demektir, bu yüzden bu komutu uygulayarak sunucuyu yeniden başlatmak ve kabuk komut dosyasında yukarıda gösterildiği gibi 30 saniye boyunca uyumak istiyorum.
/opt/app/test/start_stop.sh start
Bu benim yukarıdaki kabuk betiğimde burada yapmak mümkün mü?
Bu kabuk betiğini Ubuntu 12.04'te çalıştırıyorum.
lsof -i :8080 -sTCP:LISTENve konsolda bir şey alamıyorum, ancak bunu deniyorsamnetstat -tulpn | grep :80808080 portunda çalışan işlemimi alıyorum, neden böyle?