Respostas:
Adicione time
antes do comando que você deseja medir. Por exemplo: time ls
.
A saída será semelhante a:
real 0m0.606s
user 0m0.000s
sys 0m0.002s
Explicação sobre real
, user
e sys
(de man time
):
real
: Tempo real decorrido (relógio de parede) usado pelo processo, em segundos.user
: Número total de segundos de CPU que o processo usou diretamente (no modo de usuário), em segundos.sys
: Número total de segundos de CPU usados pelo sistema em nome do processo (no modo kernel), em segundos.sudo apt-get install time
se estiver usando um shell em que time
não esteja embutido.
time
, mas man time
seria sobre um executável (como /usr/bin/time
no time
pacote), e sua saída pareceria diferente. Também no Bash, você pode help time
pedir ajuda com o builtin.
Para uma medição delta linha a linha, tente o gnomon .
É um utilitário de linha de comando, um pouco como o ts de moreutils, para acrescentar informações de registro de data e hora à saída padrão de outro comando. Útil para processos de longa execução, nos quais você deseja um registro histórico do que está demorando tanto.
A canalização de qualquer coisa para o gnomon precederá um carimbo de data / hora para cada linha, indicando quanto tempo essa linha foi a última linha no buffer - ou seja, quanto tempo levou para a próxima linha aparecer. Por padrão, o gnomon exibirá os segundos decorridos entre cada linha, mas isso é configurável.
sudo npm i gnomon -g
se tiver npm
. Não tenho certeza de quão bem ele é contra as linhas de "progresso" usando '\ r' (permanecendo na mesma linha): nesse caso, eu gostaria que contasse tudo como uma linha longa, não como linhas separadas.
Você pode usar time
:
time ls -R
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
A execução deste comando no terminal fornecerá o tempo total para copiar um arquivo
find
comando - sem o 2>/dev/null
redirecionamento - fornece mensagens copiosas Permission denied
. No entanto, adicionar 2>/dev/null
a esse comando interrompe a time
parte desse comando. O seguinte fornece um bom compromisso:, START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"
dando (por exemplo) /usr/lib/libname-server-2.a find command took 3 sec
como o único resultado.
time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print
(ou seja, como sudo
) - evitando esses numerosos Permission denied
avisos.
Ocasionalmente, me pego precisando de um cronômetro para contar quanto tempo leva para uma ação como a inicialização do meu aplicativo; nesse caso, muitas das soluções aqui não são úteis.
Para isso, eu gosto de usar sw .
wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
sw
- start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
- start a stopwatch from the last saved start time (or current time if no last saved start time exists)
- "-r" stands for --resume
time -v command
-v
dá mais informação
real
,user
esys
os tempos são de que esse comando retornará?