0

0

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

舞夢輝影

舞夢輝影

发布时间:2025-12-05 21:30:01

|

222人浏览过

|

来源于php中文网

原创

可用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')

发送请求并获取状态码(不输出 body,超时 10 秒)

STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$URL" 2>/dev/null)

if [[ "$STATUS_CODE" =~ ^[23][0-9][0-9]$ ]]; then echo "[$TIMESTAMP] OK: $URL → $STATUS_CODE" >> "$LOG" else echo "[$TIMESTAMP] ALERT: $URL → $STATUS_CODE" >> "$LOG"

可选:发送邮件提醒(需系统已配置 mail 命令)

# 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

检查关键词(例如页面含 "OK" 或 "healthy")

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

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

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

故事AI绘图神器
故事AI绘图神器

文本生成图文视频的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 支持等扩展点。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

431

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

175

2023.10.30

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

373

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

412

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

1968

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1998

2024.08.16

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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