重定向 {time} 的输出

重定向 {time} 的输出

我正在尝试对网络服务器的单个请求进行基准测试,但这样做时遇到问题,具体来说,我在重定向命令的输出时遇到问题time

如果我只是跑

time curl "http://www.google.com"

我的结果是全身响应,然后是time命令的打印输出。

如果我通过重定向运行它

time curl "http://www.google.com" 1> out.log 2> err.log

out.log我仍然看到响应的正文,在err.log我看到curl命令的输出

然而问题是命令的输出time仍然打印到终端

[501] ~ > time curl "http://www.google.com" 1> out.log 2> err.log

real    0m0.092s
user    0m0.004s
sys     0m0.004s

[502] ~ > cat err.log
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19093    0 19093    0     0   225k      0 --:--:-- --:--:-- --:--:--  227k

输出到哪个缓冲区time,以及如何将其放入文件中?根据我的理解,它应该已通过管道传输到err.log.

答案1

你可以尝试使用 { time curl -s https://www.google.com ; } > body.txt 2> time.txt

答案2

如果您不使用 bash-internal 版本而是使用 GNU 工具(例如/usr/bin/time),您可以-o选择如下解释的选项man time

/usr/bin/time -po outfile.txt curl "http://www.google.com"

将把时间写到outfile.txt.

GNU time 有许多选项来格式化输出,有关详细信息,请参阅手册页。

相关内容