首页 > 运维 > linux运维 > 正文

Linux 下自动监控 URL 状态的脚本示例

舞夢輝影
发布: 2025-12-05 21:30:01
原创
193人浏览过
可用curl配合cron实现轻量级URL监控:基础版检查HTTP状态码是否为2xx/3xx,增强版增加响应时间与关键词校验,支持告警去重及日志记录,每分钟执行一次。

linux 下自动监控 url 状态的脚本示例

可以用 curl 配合定时任务(cron)实现轻量级 URL 可用性监控,无需额外安装复杂工具

基础检测脚本(检查 HTTP 状态码

以下脚本会请求目标 URL,判断返回状态码是否为 2xx 或 3xx,不是则发邮件或记录日志:

#!/bin/bash
URL="https://example.com/health"
LOG="/var/log/url-monitor.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
<h1>发送请求并获取状态码(不输出 body,超时 10 秒)</h1><p>STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$URL" 2>/dev/null)</p><p>if [[ "$STATUS_CODE" =~ ^[23][0-9][0-9]$ ]]; then
echo "[$TIMESTAMP] OK: $URL → $STATUS_CODE" >> "$LOG"
else
echo "[$TIMESTAMP] ALERT: $URL → $STATUS_CODE" >> "$LOG"</p><h1>可选:发送邮件提醒(需系统已配置 mail 命令)</h1><pre class="brush:php;toolbar:false;"># echo "URL $URL down, status $STATUS_CODE" | mail -s "URl Down Alert" admin@example.com
登录后复制

fi

增强版:同时检查响应时间和关键词

有些服务返回 200 却内容异常(如报错页),可补充检查响应体中是否包含预期关键词:

# 在原脚本中替换判断部分:
RESPONSE=$(curl -s --max-time 10 "$URL" 2>/dev/null)
STATUS_CODE=$(echo "$RESPONSE" | head -n1 | grep -oE 'HTTP/[0-9.]+ [0-9]{3}' | awk '{print $2}' | tail -n1)
# 若没取到状态码,fallback 到 curl 的 w 输出
if [ -z "$STATUS_CODE" ]; then
    STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$URL" 2>/dev/null)
fi
<h1>检查关键词(例如页面含 "OK" 或 "healthy")</h1><p>if [[ "$STATUS_CODE" =~ ^[23][0-9][0-9]$ ]] && echo "$RESPONSE" | grep -q -i "healthy|OK|up"; then
echo "[$TIMESTAMP] OK: $URL → $STATUS_CODE (keyword found)"
else
echo "[$TIMESTAMP] ALERT: $URL → $STATUS_CODE (or keyword missing)"
fi
登录后复制

加入简单告警去重(避免重复刷屏)

连续失败时只在首次和恢复时通知,减少干扰:

Winston AI
Winston AI

强大的AI内容检测解决方案

Winston AI 138
查看详情 Winston AI
  • 用一个临时文件记录上次状态(如 /tmp/url-status.flag
  • 脚本运行前读取该文件,对比当前结果;仅当状态从 ok→fail 或 fail→ok 时触发告警
  • 每次运行后更新 flag 文件内容(例如写入 updown

添加到 cron 每分钟执行一次

编辑 root 的 crontab(sudo crontab -e),添加:

# 每分钟检查一次(生产环境建议 30s–5min 根据需求调整)
* * * * * /path/to/monitor-url.sh >/dev/null 2>&1
登录后复制

注意赋予脚本执行权限:chmod +x /path/to/monitor-url.sh

基本上就这些。小团队或个人项目够用,要长期稳定可用,建议后续加上日志轮转、失败重试、多 URL 支持等扩展点。

以上就是Linux 下自动监控 URL 状态的脚本示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号