最可靠的Apache存活检测方式是用curl发起真实HTTP请求而非仅检查端口或进程,推荐使用--head --fail --connect-timeout 5 --max-time 10参数访问http://127.0.0.1/并判断200响应。

直接用 curl 检查本地 HTTP 响应是最贴近真实访问的检测方式,比只看端口或进程更可靠。关键不是“有没有进程”,而是“能不能返回 200”。
用 curl 检测 Apache 是否真正可访问
Apache 启动了但配置出错、文档根目录权限不对、模块加载失败等情况,都可能导致服务“活着”却无法响应请求。所以推荐用 curl 发起一次真实 HTTP 请求:
- 检查地址统一用
http://127.0.0.1/,避免依赖域名解析或外部网络 - 加
--head只取响应头,轻量且快速 - 设
--connect-timeout 5和--max-time 10,防止卡死 - 匹配
HTTP/1.1 200或200 OK,比单纯 grep '200' 更严谨
基础存活检测脚本(输出 UP/DOWN)
保存为 /usr/local/bin/check-httpd.sh,赋予执行权限即可随时调用:
#!/bin/bash
URL="http://127.0.0.1/"
if curl -s --head --fail --connect-timeout 5 --max-time 10 "$URL" >/dev/null 2>&1; then
echo "UP"
exit 0
else
echo "DOWN"
exit 1
fi
说明:--fail 让 curl 在非 2xx/3xx 状态码时返回非零退出码,配合 $? 可直接用于判断逻辑,比 grep 更健壮。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
带自动重启的循环监控脚本
适合长期后台运行,每 30 秒检测一次,发现异常立即重启服务:
- 先尝试
systemctl restart httpd(适用于 systemd 系统) - 若不生效,回退到
/etc/init.d/httpd restart(适用于 SysV init) - 重启后等待 3 秒再验证,避免状态未就绪就误判
- 用
nohup启动,比sh script.sh &更稳妥,断开终端也不中断
示例片段:
while true; do
if ! curl -s --head --fail --connect-timeout 5 "$URL" >/dev/null 2>&1; then
echo "$(date): Apache DOWN, restarting..." >> /var/log/httpd-monitor.log
systemctl restart httpd 2>/dev/null || /etc/init.d/httpd restart 2>/dev/null
sleep 3
# 二次验证
if curl -s --head --fail --connect-timeout 5 "$URL" >/dev/null 2>&1; then
echo "$(date): Restart OK" >> /var/log/httpd-monitor.log
else
echo "$(date): Restart FAILED" >> /var/log/httpd-monitor.log
fi
fi
sleep 30
done
集成进系统服务(推荐 systemd 方式)
把监控脚本变成一个真正的系统服务,能随开机启动、支持日志查看、便于管理:
- 新建服务文件
/etc/systemd/system/httpd-monitor.service - 内容包含
Type=simple、Restart=always、User=root - 启用并启动:
systemctl daemon-reload && systemctl enable --now httpd-monitor - 查状态:
systemctl status httpd-monitor;看日志:journalctl -u httpd-monitor -f
这样既免去手动 & 后台运行的麻烦,也规避了 /etc/rc.local 在新版系统中可能被忽略的风险。

















