-w 的作用

  • 完成请求传输后,使 curl 在 stdout 上显示自定义信息
  • 格式是一个字符串,可以包含纯文本和任意数量的变量

输出格式

  1. 输出格式中的变量会被 curl 用对应的值替换掉
  2. 所有变量的格式为: %{variable name}
  3. 要输出一个普通的 % 只需将它们写为 %%
  4. 可以使用 \n、带 \r 的回车符和带 \t 的制表符来输出换行符
  5. 如果想通过文件来传入变量,可以用 @filename 的格式

变量列表

content_type(有用)

HTTP 请求的 Content-type

errormsg(有用)

错误信息

exitcode

转移的数字出口代码,不知道啥来的

filename_effective

curl 执行结果最终写入的文件名,当加上了 -o、-O 才有意义

ftp_entry_path

初始路径,当登录到远程 FTP 服务器时结束

http_code(有用)

响应码

http_connect

在对 curl CONNECT 请求的最后响应(来自代理)中找到的数字代码

http_version

http 版本

local_ip(有用)

ip 地址,可以是ipv4,也可以是ipv6

num_connects

最近传输中,新的连接数

num_redirects

在请求中跳转的次数

redirect_url

当 curl 没有指定 -L、--location 参数跟随重定向时,此变量将显示重定向实将跳转的实际 URL

remote_ip(有用)

目标服务器的远程IP,可以是 ipv4、ipv6

remote_port(有用)

目标服务器的远程端口

response_code(有用)

和 http_code 一样,都是响应码

scheme

请求协议,就是 HTTP、HTTPS

size_download

下载的总字节数

size_header

下载头的总字节数

size_request(有用)

HTTP请求中发送的总字节数

size_upload

上传的总字节数

speed_download

平均下载速度,每秒字节数

speed_upload

平均上传速度,每秒字节数

time_namelookup(有用)

DNS 域名解析的耗时,就是把 https://zhihu.com 转换成 ip 地址的过程

time_connect(有用)

TCP 连接建立的时间,就是三次握手的时间

time_appconnect(有用)

SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间

time_redirect(有用)

  • 在最终事务开始之前,所有重定向步骤(包括名称查找、连接、预传输和传输)所用的时间(以秒为单位)
  • time_redirect 显示多个重定向的完整执行时间

time_pretransfer(有用)

从请求开始到响应开始传输的时间

time_starttransfer(有用)

  • 从请求开始到第一个字节将要传输的时间
  • 包括预传输时间和服务器处理结果所需的时间。

time_total(有用)

这次请求花费的全部时间

url_effective(有用)

  • 最后获取的 URL
  • 如果 curl 添加了 -L 且真的重定向之后,这个就很有用了

使用 curl 命令分析请求的耗时情况

实际工作中的问题

某个请求的响应特别慢,那想要分析为什么这个请求慢,到底是哪一步耗时长,应该怎么做?

强大的 curl -w

提供了 7 种 time 变量,上面就能看到

写一个文件,包含 7 种变量,还能比较好看的格式化输出

    time_namelookup:  %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_redirect: %{time_redirect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}

请求 http

 curl -w "@format.txt" -S -s -L -k -o /dev/null http://baidu.com

所有时间都是秒单位

  • DNS 解析查询时间:time_namelookup【 0.004146】
  • TCP 建立连接时间:time_connect【0.013002】 - time_namelookup【0.004146】
  • 服务器处理时间:time_starttransfer【0.02542】-time_pretransfer【0.013039】
  • 内容传输时间:time_totle【0.072124】-time_starttransfer【0.02542】

因为不是 https 协议和重定向,所以中间两个没有时间

请求 https

curl -w "@format.txt" -S -s -L -k -o /dev/null https://baidu.com

SSL 协议处理时间:time_appconnect【0.042989】 - time_namelookup【 0.008223】

Linux - curl -w 参数详解的更多相关文章

  1. (转)Linux curl命令参数详解

    Linux curl命令参数详解 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...

  2. Linux curl命令参数详解(6/23)

    linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 在Linux中c ...

  3. Linux curl命令参数详解--转载

    linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态. 一.Linux ...

  4. Linux curl命令参数详解

    笔者出处:http://www.aiezu.com/system/linux/linux_curl_syntax.html linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支 ...

  5. linux ./configure 的参数详解

    转载自http://blog.csdn.net/zjt289198457/article/details/6918656 linux ./configure 的参数详解   ./configure 该 ...

  6. Linux ifconfig-etho文件参数详解

    1.ifcfg-eth0文件参数详解 DEVICE 网卡名称/网络接口的名称BOOTPROTO 系统启动地址协议 常用参数: none:不使用启动地址协议,none禁止DHCP bootp:BOOTP ...

  7. [Linux命令]curl命令参数详解——转载

    linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态.curl命令参数介 ...

  8. curl常用参数详解及示例

    curl简介 curl是一个开源的命令行工具,它基于网络协议,对指定URL进行网络传输,得到数据后不任何具体处理(如:html的渲染等),直接显示在"标准输出"(stdout)上. ...

  9. linux Tar 命令参数详解

    tar命令 . 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. . 格式 tar [主选项+辅选项] 文件或目录 eg: tar z ...

随机推荐

  1. 徒手从零实现 uTools 系列(三)- 屏幕取色和截屏

    前言 为了进一步提高开发工作效率,最近我们基于 electron 开发了一款媲美 uTools 的开源工具箱 rubick.该工具箱不仅仅开源,最重要的是可以使用 uTools 生态内所有开源插件!这 ...

  2. 12.5finally子句

    要点提示:无论异常是否产生,finally子句总是会执行的. 有时候无论异常是否出现或者是否被捕获,都希望执行某些代码.java有一个finally子句,可以用来达到这个目的. 注意:使用finall ...

  3. AcWing 342. 道路与航线

    #include<bits/stdc++.h> using namespace std; const int N=2e5+5; int h[N],cnt,to[N],nxt[N],vis[ ...

  4. 删除表的语句(drop truncate delete)

    p.p1 { margin: 0; font: 12px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Helvetica ...

  5. Vmware 恢复flat.vmdk和delta.vmdk

    背景: 一次客户现场突然掉电,导致虚拟机文件夹里面的文件丢失,只剩余-flat.vmdk和-delta.vmdk文件,其他文件全部丢失,文件格式原本为"文件"格式.新建虚拟机无法直 ...

  6. CTF-Decrypt-the-Message-writeup

    Decrypt-the-Message 题目信息: 解密这段信息! 附件: The life that I have Is all that I have And the life that I ha ...

  7. NB-IoT物联网连接

    一.NB-1oT的专有能力物联网(Internet of Things).简称IoTNB-IoT就是指窄带物联网(Narrow Band-Internet of Things)技术目前关于NB-IoT ...

  8. Rust安装-运行第一个程序-hello_world

    Rust官网:https://rust-lang.org/ 安装 点击install,选择版本 选择相对应的版本进行下载 我这里下载的是windows系统,运行下载好的exe文件,根据需要选择选对应的 ...

  9. CF175E Power Defence

    CF175E Power Defence 题意 一个塔防游戏:给定一个无限长的数轴,一个无限血的敌人要从正无穷走到负无穷.你的任务是放置三种塔,包含两种攻击塔和一种寒冰塔,使得敌人受到的伤害最大. 其 ...

  10. 【洛谷P1962 斐波那契数列】矩阵快速幂+数学推导

    来提供两个正确的做法: 斐波那契数列双倍项的做法(附加证明) 矩阵快速幂 一.双倍项做法 在偶然之中,在百度中翻到了有关于斐波那契数列的词条(传送门),那么我们可以发现一个这个规律$ \frac{F_ ...