由于流量很大,我的专用服务器上的 HTTP 服务崩溃了。然后,我不得不手动重启 httpd 服务。
我只是搜索一个检测 HTTP 服务是否正常的 shell 脚本 - 如果没有:重新启动 httpd。
如果您口袋里有这个,非常感谢......
答案1
这并不能解决您的问题。您需要找到问题的真正原因才能解决它。
无论如何你可以尝试监控。它是一个守护进程,用于监视您的服务并执行配置的操作(例如重启)。
答案2
如果您打算使用 shell 脚本...
#!/bin/bash
httpd_init="/etc/init.d/httpd"
check1="$(pgrep -f httpd)"
check2="$($httpd_init status | grep -E is[^not]running)"
[[ -n $check1 && -n $check2 ]] && echo "httpd is alive!" || { echo "httpd is dead!"; $httpd_init start; }
exit $?
该脚本对您的 httpd pid 执行简单检查(使用 pgrep),并对“/etc/init.d/httpd status”的响应字符串执行小型正则表达式检查(如果服务出现故障,当然会显示“已停止”)。
如果服务已停止,该脚本将使其恢复运行。
希望这可以帮助!
答案3
许多发行版正在迁移到systemdinit
,它可以自动处理此类问题。抱歉,我知道这不是解决您问题的即时方法。