Я запускаю свій скрипт оболонки нижче на машині, на якій працює сервер додатків 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, чому так?