Como posso rastrear o tempo na linha de comando?

11

Estou procurando um comando para rastrear o tempo.

Eu imagino o seguinte fluxo de trabalho:

  1. Execute o comando
  2. ... faça outra coisa ...
  3. Volte à janela do terminal e pare o comando
  4. Como saída, você recebe o tempo decorrido entre 3 e 1
orschiro
fonte
@JacobVlijm Eu realmente gosto da clareza da resposta de Anwar abaixo. Como usuário não técnico, é mais fácil compreender as respostas no possível encadeamento duplicado. O que você acha?
Orschiro 8/11
2
@JacobVlijm Eu não acho que isso seja uma duplicata. O OP aqui está pedindo um cronômetro, a pergunta lá está perguntando como medir o tempo de execução do processo.
Seth
@ Seth ok, voto retraído.
Jacob Vlijm
@ Eric você leu meu comentário acima?
Seth

Respostas:

6

E se:

stopwatch() { 
    local start=$SECONDS
    read -p "Hit Enter..."
    echo $((SECONDS-start)) seconds elapsed
}

Em ação:

$ stopwatch 
Hit Enter...
14 seconds elapsed
Glenn Jackman
fonte
3

A maneira mais simples de fazer isso é usar o horário de início e, assim que você interrompe o script, faça o mesmo. Por fim, imprima a diferença horária. Isso pode ser feito facilmente com o Python:

python -c $'import time;start=time.time();\ntry:\n\twhile True: time.sleep(0.25)\nexcept: print(time.time()-start)'

Ou versão longa para facilitar a leitura:

import time
start=time.time();
try:
    while True: time.sleep(0.25)
except: 
    print(time.time()-start)

A parada é feita com Ctrl + C

Sergiy Kolodyazhnyy
fonte
1
while True: passexecuta a CPU em 100%. Em while True: time.sleep(1e9)vez disso, sugiro ( signal.pause()funciona também, mas requer uma importação adicional).
usar o seguinte código
@ 2012rcampion bom ponto, editado isso já.
Sergiy Kolodyazhnyy
1
É geralmente considerado má prática para pegar todas as exceções (embora neste caso provavelmente não é muito relevante), except KeyboardInterruptseria melhor
Tobias KIENZLER
3
@TobiasKienzler Estou ciente disso. Se este for um projeto grande, divido coisas para capturar várias exceções. Sinta-se livre para olhar para o meu outro código, indicadores e afins. Mas, neste caso, há apenas um, por isso não é exatamente relevante. Além disso, esta é uma maneira rápida e suja. Por nit golfe um pouco?
Sergiy Kolodyazhnyy
Concordo plenamente, apenas pensei que vale a pena mencionar;)
Tobias KIENZLER