• Linux


    -w 的作用

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

    输出格式

    1. 输出格式中的变量会被 curl 用对应的值替换掉
    2. 所有变量的格式为: %{variable name} 
    3. 要输出一个普通的 % 只需将它们写为 %%
    4. 可以使用 、带 的回车符和带 的制表符来输出换行符
    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}
    
           time_connect:  %{time_connect}
    
        time_appconnect:  %{time_appconnect}
    
          time_redirect:  %{time_redirect}
    
       time_pretransfer:  %{time_pretransfer}
    
     time_starttransfer:  %{time_starttransfer}
    
                        ----------
    
             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】

  • 相关阅读:
    InDesign 2022创建动态电子书和电子杂志
    如何在Mac上使用屏幕共享
    Mac终端程序背景如何设置为透明的?
    使用photoshop2021对有阴影的背光摄影照片进行调色修改
    Sketch如何实现背景局部模糊?
    苹果 macOS Monterey 12.3 开发者预览版 Beta 4 发布
    让Mac程序坞只显示正在运行的应用程序的方法
    Cornerstone 意外退出、打开闪退的解决办法
    windows下清理DNF缓存
    Centos7friewalld报错Failed to start firewalld dynamic firewall daemon
  • 原文地址:https://www.cnblogs.com/poloyy/p/14877100.html
Copyright © 2020-2023  润新知