É uma questão de qual casca estamos falando.
Neste shell, eu recebo:
$ times
0m9.805s 0m3.372s
39m29.072s 0m15.537s
Porque está funcionando há algum tempo.
No entanto, um sub-shell reportará zero:
$ ( times )
0m0.000s 0m0.000s
0m0.000s 0m0.000s
E, como um pipeline é executado em um sub-shell para cada parte dele:
$ sleep 10 | times
0m0.000s 0m0.000s
0m0.000s 0m0.000s
Se você executar o comando acima, deverá ver a saída times
imediatamente (pois ela não depende do canal) e o prompt do shell retornará 10 segundos depois.
Solução alternativa?
Permaneça no shell "this":
$ times > >(read user sys; echo "$user")
Então, por que você precisa de tempo? Poderia time
ou o mais poderoso /usr/bin/time
funcionar para você?
Tempo de uso:
$ TIMEFORMAT="%R;%U;%S"; time { sleep 1; }
1.001;0.000;0.000
$ TIMEFORMAT="%U"; time { sleep 1; } #### If you only want user.
0.000
Coloque vários processos entre chaves:
$ time { wc /etc/hosts; sleep 2; }
21 115 327 /etc/hosts
real 0m2.003s
user 0m0.000s
sys 0m0.000s
Use o time
externo mais poderoso (infelizmente só funciona em arquivos executáveis externos):
$ /usr/bin/time wc /etc/hosts
21 115 327 /etc/hosts
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 534maxresident)k
0inputs+0outputs (0major+109minor)pagefaults 0swaps