
Я хочу проверить состояние веб-сервера. Если http-ответ пришел в течение 2 минут, сервер следует перезапустить. Я использую следующую команду для проверки состояния -
curl -s -w "%{time_total}\n" -o /dev/null http://localhost:8080/demo1/employee/hello
Но выполняет бесконечный цикл и проверяет ответ.
решение1
Нижеприведенный скрипт проверит время, затраченное на URL, и если оно больше 2 минут, то он перейдет в условие if. Вам нужно поместить туда команду перезапуска. Он спит 60 секунд для каждой итерации.
#!/bin/bash
LOG_FILE=/tmp/log.txt
while true
do
echo "$(date) - Checking the URL is up or not" >> ${LOG_FILE}
TIME_TAKEN=$(curl -s -w "%{time_total}\n" -o /dev/null http://localhost:8080/demo1/employee/hello)
if [ "${TIME_TAKEN}" -gt "120" ]
then
echo "$(date) - Restart required. Time taken is ${TIME_TAKEN}" >> ${LOG_FILE}
# your restart command goes here
echo "$(date) - Successfully restarted" >> ${LOG_FILE}
fi
echo "$(date) - Sleep for 60 seconds" >> ${LOG_FILE}
sleep 60
done