Rastrear o tempo que um comando leva no UNIX / LINUX?

118

No UNIX / LINUX, existe uma maneira fácil de controlar o tempo que um comando leva?

OneChillDude
fonte

Respostas:

165

Sim, use time <command>, como

time ls

Consulte man timepara mais opções. Link .

squiguy
fonte
4
E o significado dos tempos reais / usuário / sys é bem abordado aqui
orgulho em
Esta resposta é imprecisa para usuários do bash no Linux. A página de manual documenta o comando Gnu time, mas time é um embutido no bash, que não tem todas as opções documentadas lá.
Ben Crowell
7

Usar

/usr/bin/time 

em vez disso, o tempo embutido no bash: é AFAIK mais configurável.

e.g. /usr/bin/time --format=' \n---- \nelapsed time is %e'ls
Paolinux
fonte
Pelo que eu posso dizer, esse é o padrão. Este foi o caso nos sistemas CentOS 6, CentOS 7 e Debian 8 que verifiquei: user@host:~$ which time /usr/bin/time Parece ser a versão 1.7 do tempo do GNU.
Toby,
4
@Toby: Mesmo que "which" diga que é / usr / bin / time, no bash, o builtin substitui isso. Se eu fizer time -f "\t%E real" lsno bash, recebo um erro, mas funciona se o fizer /usr/bin/time -f "\t%E real" ls.
Ben Crowell
1
Você está certo. Isso é muito interessante e esclarecedor. Obrigado!
Toby de
1
Não use which. Uso type -a:$ which time /usr/bin/time $ type -a time time is a shell keyword time is /usr/bin/time
Daniel-Dane
Observe que o uso /usr/bin/timeevita que você use aliases de bash. O bash embutido timeé necessário para isso, senão você obterá o erro cannot run my_alias: No such file or directory.
Jamie S de
6

Esta é a aparência de um sleepde um segundo, cronometrado com time:

$ time sleep 1

real    0m1.001s
user    0m0.000s
sys 0m0.000s
Guillaume Chevalier
fonte