Я намагаюся створити скрипт bash, який слідкує за веб-службою, і якщо не вдається перезапустити службу через певний час, поки вона не повернеться до відповіді 200.
Приклад:
#!/bin/bash
HTTPD=`curl -A "Web Check" -sL --connect-timeout 3 -w "%{http_code}\n" "http://127.0.0.1" -o /dev/null`
until [ "$HTTPD" == "200" ]; do
printf '.'
sleep 5
service nginx restart
done
or
while [ "$HTTPD" != "200" ];
do
service nginx restart
sleep 5
if [ "$HTTPD" == "200" ];then
break;
else
service nginx restart
fi
done
Обидва вони працюють як 80%, проблема полягає в тому, що цикл не повторно перевірятиме стан відповіді $ HTTPD і не порушує цикл.
Я міг би додати HTTPD = 200; після рядка перезапуску, але я хочу, щоб сценарій перевіряв реальність відповіді на стан.
EDIT: Робоча версія
#!/bin/bash
HTTPD=`curl -A "Web Check" -sL --connect-timeout 3 -w "%{http_code}\n" "http://127.0.0.1" -o /dev/null`
until [ "$HTTPD" == "200" ]; do
printf '.'
sleep 3
service nginx restart
HTTPD=`curl -A "Web Check" -sL --connect-timeout 3 -w "%{http_code}\n" "http://127.0.0.1" -o /dev/null`
done