আমি আমার নীচের শেল স্ক্রিপ্টটি এমন একটি মেশিনে চালাচ্ছি যার উপরে সি ++ অ্যাপ্লিকেশন সার্ভার 8080 পোর্টে চলছে এবং শেল স্ক্রিপ্টে আমি একটি ইউআরএল চালাচ্ছি এবং সেই URL থেকে আসা প্রতিক্রিয়াটি ডেটা ভেরিয়েবলের মধ্যে সঞ্চয় করি।
তবে ধরুন যদি একই অ্যাপ্লিকেশন সার্ভারটি নিচে থেকে থাকে তবে এটি ইউআরএল সম্পাদন করতে সক্ষম হবে না এবং তারপরে এটি প্রিন্ট করে Retrying Again
30 সেকেন্ডের জন্য ঘুমাবে এবং তারপরে আবার একই ইউআরএল সম্পাদন করবে।
#!/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 সেকেন্ডের জন্য ঘুমাব sleep
/opt/app/test/start_stop.sh start
এটি কি আমার উপরের শেল স্ক্রিপ্টে করা সম্ভব?
আমি এই শেল স্ক্রিপ্টটি উবুন্টু 12.04 এ চালাচ্ছি।
lsof -i :8080 -sTCP:LISTEN
এবং আমি কনসোলে কিছুই পাচ্ছি না তবে আমি যদি এটি চেষ্টা করে যাচ্ছিnetstat -tulpn | grep :8080
তবে আমার প্রক্রিয়াটি যা ৮০৮০ বন্দরে চলছে তা কেন এমন হয়?