मैं अपना निचला शेल स्क्रिप्ट एक मशीन पर चला रहा हूं, जिस पर 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 पोर्ट पर चल रही है ऐसा क्यों है?