Como cronometro um comando específico?

67

(O equivalente em linux do TimeThis.exe)

Algo como:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.
ripper234
fonte

Respostas:

94

Tente apenas em timevez de timethis.

Embora esteja ciente de que geralmente há uma versão do tempo integrada no shell e uma versão binária, que fornecerá resultados em diferentes formatos:

$ time wget -q -O /dev/null https://unix.stackexchange.com/

real    0m0.178s
user    0m0.003s
sys     0m0.005s

vs

$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps

Ao contrário do programa "timethis", você recebe três valores de volta. Isso é dividido em O que é "hora do sistema" ao usar "hora" na linha de comando , mas resumindo: real significa "hora do relógio de parede", enquanto o usuário e o sistema mostram a hora do relógio da CPU, dividida entre o código normal e as chamadas do sistema.

mattdm
fonte
26

Usando o executável em timevez do shell interno, você pode especificar o formato e os valores de saída. Por exemplo, obtenha o tempo decorrido real junto com o nome e os parâmetros do comando

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

Observe que você deve especificar o caminho time, caso contrário, usará o shell interno como padrão.

forcefsck
fonte
4
observe que: o caminho é importante. Não use apenas 'tempo' no bash. Em vez disso, use o tempo / usr / bin /
CodeFarmer
11
qual é a diferença se /usr/binestá em seu caminho?
galois
@galois A diferença é que, sem o caminho explícito, o timeutilitário interno do shell será usado.
Kusalananda
Também pode usar command timeou \timeexecutar o utilitário em vez do build-in.
forcefsck
0

@galois: Os vários shells têm um punhado de comandos "internos" que têm precedência sobre qualquer coisa no caminho. Normalmente isso é vantajoso; os internos tendem a funcionar mais rapidamente (porque não chamam um arquivo externo) e geralmente fornecem o resultado desejado (por exemplo, no caso do comando time, você normalmente não se importa com a versão que está usando, a menos que queira usar o " --format ").

Portanto, o "tempo" sem caracteres especiais (como /) para parecer um caminho acabará executando o built-in, independentemente da aparência do seu PATH.

Para forçar o shell a usar o comando de hora externa, você deve fornecer o caminho

Tom Payerle
fonte