首页/系统/Linux 运维命令速查/场景:批量 URL 巡检
网络命令82 条

场景:批量 URL 巡检

上线后巡检一组接口/页面:curl 逐个取状态码与耗时,输出成清单,异常项一眼可见;可并行加速。

Linux 运维命令速查系统更新于 2026-10-13

批量 URL 巡检的思路

上线后巡检一组页面或接口,用 curl 逐个取 HTTP 状态码与耗时,输出成清单,异常项一眼可见;URL 多时用 xargs -P 并行提速。这套做法最大的价值是可留档、可比对:固定时间跑一次并保留历史结果,两份日志一 diff 就能看出服务是否退化,比人工反复点页面可靠得多。

基本信息

适用平台任意装有 curl 的 Linux(并行依赖 findutils 的 xargs)
核心参数curl -w 自定义输出、-o /dev/null 丢弃正文、--max-time 超时
并行写法xargs -P N -I {} sh -c ...
结果字段http_code、time_total、time_connect、time_starttransfer
留档建议结果带日期落盘并保留历史,便于逐日对比

典型使用场景

  • 发版后批量验证关键页面与接口可用性
  • 每日巡检对外服务与合作伙伴接口
  • 迁移或切流后对比前后状态码分布
  • 补充监控盲区:核心 URL 的外部拨测
  • 归档为工单材料,批量取证

顺序与并行巡检

顺序与并行巡检
while read -r url; do
  read -r code time < <(curl -sS -o /dev/null --max-time 10 -w '%{http_code} %{time_total}' "$url")
  echo "$code $time $url"
done < urls.txt | awk '$1 != 200 {print "NG:", $0} $1 == 200 {print "OK:", $0}'

cat urls.txt | xargs -P5 -I{} sh -c 'code=$(curl -sS -o /dev/null --max-time 10 -w "%{http_code}" "{}"); echo "$code {}"'

curl -sS -o /dev/null -w '%{http_code}\n' -H 'Authorization: Bearer TOKEN' https://api.example.com/health
bash check.sh > /var/log/urlcheck-$(date +%F).log 2>&1
diff /var/log/urlcheck-2026-10-12.log /var/log/urlcheck-2026-10-13.log | head

curl 输出字段怎么读

字段含义常见异常
http_codeHTTP 状态码502/503 上游故障;401/403 鉴权;404 路由或域名配错
time_total整体耗时(秒)明显变长说明链路或后端退化
time_connect / time_appconnectTCP 与 TLS 握手耗时偏高说明 TLS 或网络层有问题
time_starttransfer首字节时间反映后端处理速度
exit codecurl 自身退出码非 0 表示连不上、超时或证书错误,与状态码不是一回事
巡检结果落盘留档、固定时间执行并与前一天对比:状态码分布的变化,往往比单个错误更早暴露问题。
需要鉴权或只接受 POST 的接口不能裸 GET 巡检:否则会得到一片 405/401,那是巡检方法的问题而不是服务故障,结论会误导决策。
把 URL 清单与脚本一起纳入版本管理:谁新增了哪些条目一目了然,失效条目及时删除,避免长期误报把大家对告警的敏感度磨掉。
想要更完整的证据就把 -w 输出写成 CSV 再分析:按耗时排序能直接找出最慢的页面,比只看状态码更容易发现性能退化。
区分冷启动与复用连接的耗时:首次请求的 time_connect 与 time_total 天然偏高,连续巡检同一 URL 时数值下降属于正常现象,不要据此判定服务退化。

易错点

  • 忘记 --max-time:个别挂死的 URL 会让整个巡检队列长时间卡住
  • 用 GET 巡检只接受 POST 的接口:结果全是 405/401,得出错误结论
  • 不区分 curl 退出码与 HTTP 状态码:连接失败时 http_code 可能是 000,只看状态码会漏掉完全不可达的情况
  • 并行数开得过大:可能被对方 WAF 判定为攻击,也会抢占本机资源,-P 5 到 -P 10 通常已足够

数据来源与参考

  • curl 官方文档(curl.se/docs/manpage.html)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌