Você pode tentar
{ time curl -s https://www.google.com ; } > body.txt 2> time.txt
Estou tentando fazer um benchmark de uma única solicitação novamente em um servidor da Web e estou tendo um problema ao fazer isso, especificamente, estou tendo um problema ao redirecionar a saída do comando time
.
Se eu simplesmente executar
time curl "http://www.google.com"
meu resultado é a resposta completa do corpo, seguida da impressão do comando time
.
Se eu executar com redirecionamento
time curl "http://www.google.com" 1> out.log 2> err.log
Em out.log
, ainda vejo o corpo da resposta e, em err.log
, vejo a saída do comando curl
O problema, no entanto, é que a saída do comando time
ainda está sendo impressa no terminal
[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
Para qual buffer a saída time
e como eu posso colocar isso em um arquivo? Pelo que entendi, deveria ter sido canalizado para err.log
.
Você pode tentar
{ time curl -s https://www.google.com ; } > body.txt 2> time.txt
Se você não usa a versão bash-interna, mas a ferramenta GNU (por exemplo, /usr/bin/time
), você tem a opção -o
conforme explicado por man time
:
/usr/bin/time -po outfile.txt curl "http://www.google.com"
escreve a hora em outfile.txt
.
O tempo GNU tem muitas opções para formatar a saída, veja a man page para detalhes.