Linux怎么使用curl命令测试接口响应时间和状态码

落磊姑娘_6783

落磊姑娘_6783

2026-09-22

867人浏览

原创

应使用curl -o /dev/null -s -w "%{http_code}" url静默获取状态码,避免响应体干扰;加-f可使非2xx/3xx响应返回非零退出码便于判断,注意底层错误(如dns失败)会导致%{http_code}为空,需依赖退出码捕获。

linux怎么使用curl命令测试接口响应时间和状态码

只看状态码:用 -w 输出 HTTP 状态,别让响应体干扰判断

很多人直接 curl http://example.com/health,结果输出一堆 HTML 或 JSON,还得肉眼找 200。真正做健康检查或脚本判断时,必须屏蔽响应体,只取状态码。

  • curl -o /dev/null -s -w "%{http_code}\n" http://example.com/health:静默请求,只打印状态码(如 200503
  • -f 可让 curl 在非 2xx/3xx 响应时返回非零退出码,方便 if 判断:if curl -f -s -o /dev/null -w "%{http_code}" http://x; then echo ok; else echo fail; fi
  • 注意:%{http_code} 只在请求“完成”后才有值;DNS 失败、连接拒绝等底层错误不会触发它,此时整个 -w 输出为空,需靠退出码捕获

分阶段测延迟:DNS、TCP、TLS、首字节各耗多少时间

单纯看 time_total 没法定位瓶颈。比如接口慢,是 DNS 解析卡了?还是 TLS 握手拖住了?得拆开看。

  • HTTPS 必须显式加 %{time_appconnect} 才能测 TLS 握手,否则 %{time_connect} 只到 TCP 建连为止
  • 正确写法:curl -s -o /dev/null -w "DNS:%{time_namelookup}, TCP:%{time_connect}, TLS:%{time_appconnect}, TTFB:%{time_starttransfer}, Total:%{time_total}\n" https://example.com
  • %{time_appconnect}0.000,不一定是快——可能是服务端用了 TLS 1.3,握手和首字节合并了,此时更该看 %{time_pretransfer}
  • 本地 hosts 或 DNS 缓存会让 %{time_namelookup} 虚低,要测真实公网解析,加 --dns-servers 8.8.8.8(需 curl ≥ 7.33.0)

脚本里持续探测:用 while 循环 + 超时 + 重试逻辑

单次测试没意义,生产环境需要带间隔、可中断、失败能反馈的轮询。

Test Curl 2
Test Curl 2

父母的功课——育儿心理学对话支持技能(心虫增强版)。提供结构化对话、情绪识别、场景匹配与安全检测;可选Python脚本(scripts/)在SKILL_DIR/data/本地存储评估历史、洞察与会话状态,不对外传输。核心路径:觉察(看见防御)→接纳(慈悲是……

下载
  • 基础循环(每 3 秒测一次,带耗时):while true; do curl -s -o /dev/null -w "HTTP:%{http_code} TTFB:%{time_starttransfer}s\n" http://localhost:8080/readyz; sleep 3; done
  • 防误判加超时:curl -m 3 -s -o /dev/null -w "%{http_code}" http://x-m 3 是总超时(含 DNS、连接、传输),不是仅连接超时
  • 启动中服务常需重试,用 for 尝试 5 次,成功就退出:for i in {1..5}; do curl -m 2 -f -s -o /dev/null -w "%{http_code}" http://x && break || sleep 1; done
  • 别用 timeout 包裹 curl——它会杀掉整个进程,无法拿到 -w 输出;curl 自身的 -m--connect-timeout 更精准

HTTPS 证书问题怎么快速区分:是连不通,还是证书错

看到 SSL certificate problem 类错误,第一反应不该是加 -k,而是先确认到底是哪一层挂了。

  • 先用 curl -v https://example.com 看详细过程,重点找两行:
    – 若卡在 * Trying x.x.x.x:443... 后无下文 → 网络层不通或防火墙拦截
    – 若出现 * SSL certificate verify failed → 确实是证书问题
  • 临时跳过校验只用于连通性验证:curl -k -s -o /dev/null -w "%{http_code}" https://x,但绝不能用于生产环境的状态判断
  • 想确认证书是否被系统信任,用 curl --cacert /etc/ssl/certs/ca-certificates.crt https://x 显式指定 CA 包,比默认行为更可控

实际跑起来你会发现,%{time_namelookup}%{time_appconnect} 这两个字段最容易被忽略,也最常误导排查方向——前者受本地缓存影响极大,后者在 TLS 1.3 下行为反直觉。测之前先 curl -V | grep SSL 确认你的版本是否支持所需特性,比硬调参数更省时间。

相关专题

更多
curl_exec
curl_exec

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

2023.06.14

3323

6

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

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

2023.10.30

695

4

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3028

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4209

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3649

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

366

15

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

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

2023.06.21

3590

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3133

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2193

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习