我想检查网络服务器的健康状态。如果在 2 分钟内收到 http 响应,那么服务器应该重新启动。我正在使用以下命令来检查状态 -
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