【问题标题】:Timing a Curl Operation in Bash在 Bash 中计时卷曲操作
【发布时间】:2009-09-21 04:44:40
【问题描述】:

我想计算使用 Curl 将一批文件提交到在 localhost 上运行的 HTTP 服务器并将其写入文件所需的时间。我无法正确获取语法。

export TIMEFORMAT="%R"
time -ao times.dat ( curl -v -d @1.batch -X POST $DB )

我怎样才能做到这一点?我想这只是使用 shell 语法的问题。

【问题讨论】:

    标签: bash time


    【解决方案1】:

    指定time的完整路径(括号是不必要的):

    export TIME="%e"
    /usr/bin/time -ao times.dat curl -v -d @1.batch -X POST $DB
    

    请注意,使用不同的环境变量和不同的说明符来获取经过的时间。

    time 是 Bash 关键字,不支持选项 -a-o

    /usr/bin/time 是一个外部二进制文件。

    $ type -a 时间 time 是一个 shell 关键字 时间是 /usr/bin/time $帮助时间 时间:时间 [-p] 管道 执行 PIPELINE 并打印实时的摘要,用户 CPU 时间, 以及在它终止时执行 PIPELINE 所花费的系统 CPU 时间。 返回状态为PIPELINE的返回状态。 `-p' 选项 以稍微不同的格式打印时序摘要。这使用 TIMEFORMAT 变量的值作为输出格式。 $人工时间 时间(1) 时间(1) 姓名 时间 - 运行程序并总结系统资源使用情况 概要 时间 [-apqvV] [-f 格式] [-o 文件] [ --append ] [ --verbose ] [ --quiet ] [ --portability ] [ --format=FORMAT ] [ --output=FILE ] [ --version ] [ --help ] 命令 [ ARGS ] 描述 使用任何给定的参数 ARG.... 运行程序 COMMAND 时。 COMMAND 完成,时间显示有关资源使用的信息 COMMAND(默认在标准错误输出上)。如果 COMMAND 退出 对于非零状态,时间显示警告消息和退出状态 图斯。 . . .

    【讨论】:

    • 确实,/usr/bin/time 不是时间。我以为我疯了!
    【解决方案2】:

    time 不适合记录持续时间。

    但你可以这样做:

    date >> $LOGFILE
    # your operation here
    date >> $LOGFILE
    

    如果您想监控每个文件的统计信息,那么您始终可以将 curl 包装在 for 循环中。

    【讨论】:

    • 为什么不完美? “时间”为您计算持续时间。您的回答将数学作为“读者练习”。
    • 其实在cygwin下骗了我好几次。
    • 这可能是 Cygwin 的问题,它的安装或配置,不一定是 time 的问题(除非它的实现不好 - 我会比较 Bash 的 @ 的输出/准确性987654326@ 与 /usr/bin/time 比较,看看问题是否相同,Cygwin 的“故障”,或者不同,一个或另一个的“故障”time)。
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多