Linux - curl -w 参数详解
输出格式输出格式中的变量会被 curl 用对应的值替换掉所有变量的格式为 %{variable name} 要输出一个普通的 % 只需将它们写为 %%可以使用 \n、带 \r 的回车符和带 \t 的制表符来输出换行符如果想通过文件来传入变量 可以用 filename 的格式
变量列表content_type 有用
HTTP 请求的 Content-type
错误信息
exitcode
转移的数字出口代码 不知道啥来的
filename_effective
curl 执行结果最终写入的文件名 当加上了 -o、-O 才有意义
初始路径 当登录到远程 FTP 服务器时结束
http_code 有用
响应码
在对 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
目标服务器的远程端口
response_code 有用
和 http_code 一样 都是响应码
请求协议 就是 HTTP、HTTPS
size_download
下载的总字节数
size_header
下载头的总字节数
size_request 有用
HTTP请求中发送的总字节数
上传的总字节数
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}
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之http命令行工具curl curl 是一个利用 URL 规则在命令行下进行文件传输工具。支持文件的上传和下载,是一个综合的传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
相关文章
- Linux awk命令详解??????????(研究)
- linux每日命令(7):rmdir命令
- Linux环境下如何让进程在后台运行
- linux 用户基础信息配置详解 (ulimit -a 参数详解)
- Linux中top命令参数详解
- Manjaro Linux执行某些命令缺少libtinfo.so.5问题
- linux 常用命令
- Linux使用过程中常见问题及其解决方法
- linux概念之cpu分析
- Linux rpm命令详解
- linux ps 命令参数详解
- 06-Linux RPM 命令参数使用详解
- jstat命令查看jvm的GC情况 (以Linux为例)
- Linux的sysctl 命令参数详解
- Linux rsync命令详解
- Linux 操作系统基础知识
- Linux·C/C++主线程对子线程的影响
- Linux下chkconfig命令详解
- 【大数据】Linux下安装Hadoop(2.7.1)详解及WordCount运行
- linux 中的进程wait()和waitpid函数,僵尸进程详解,以及利用这两个函数解决进程同步问题
- linux下IPTABLES配置详解
- linux sar 命令详解
- linux网络编程之网络函数详解
- linux的top命令参数详解
- linux添加开机自启动脚本示例详解
- Linux下的压缩解压缩命令详解
- 六款常用的linux C/C++ IDE
- Linux 基本使用和程序部署
- Linux 分区和目录
- Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)
- ELF文件的加载过程(load_elf_binary函数详解)--Linux进程的管理与调度(十三)
- Linux内核线程kernel thread详解--Linux进程的管理与调度(十)
- CentOS7/8 安装 5+ 以上的Linux kernel
- Linux Samba服务主配文件smb.conf中文详解
- Linux_Samba详解
- 【Linux】gcc-程序的翻译四个阶段(图示)
- 查看Linux进程CPU过高具体的线程堆栈(不中断程序)