Webサーバーへの単一の要求をベンチマークしようとしていますが、そうするのに問題があります。特にコマンドの出力をリダイレクトするのに問題がありますtime
。
ただ走れば
time curl "http://www.google.com"
私の結果は全身応答とtime
コマンド出力です。
リダイレクト経由で実行すると
time curl "http://www.google.com" 1> out.log 2> err.log
それでもout.log
応答本文が表示され、err.log
カールコマンドの出力が表示されます。
しかし、問題は、コマンドの出力が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の内部バージョンを使用せずにGNUツール(たとえば)を使用している場合は、以下のオプションを選択/usr/bin/time
できます。-o
man time
/usr/bin/time -po outfile.txt curl "http://www.google.com"
に時間を費やしますoutfile.txt
。
GNU時間には、出力フォーマットを指定するためのさまざまなオプションがあります。詳しくはマニュアルページをご覧ください。