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