Medindo o tempo dentro de um script

8

Este tópico mostra como medir o tempo necessário para executar um script. No meu caso, estou interessado em medir o tempo entre dois pontos dentro de um script . Aqui está um exemplo de como eu gostaria de usar isso:

start_measuring_time
Line 1
Line 2
..
Line N
stop_measuring_time
show_elapsed_time

Eu gostaria que o horário exibido fosse legível por humanos (segundos, min, horas, dias, etc.), se possível. Alguma idéia de como fazer isso?

    
por Amelio Vazquez-Reina 07.08.2011 / 21:08

3 respostas

7

Você pode usar date util:

#!/bin/bash

start_measuring_time() {
  read s1 s2 < <(date +'%s %N')
}

stop_measuring_time() {
  read e1 e2 < <(date +'%s %N')
}

show_elapsed_time() {
  echo "$((e1-s1)) seconds, $((e2-s2)) nanoseconds"
}

start_measuring_time
sleep 2
stop_measuring_time
show_elapsed_time
    
por 07.08.2011 / 21:27
11

Você pode usar apenas time :

time (
Line 1
Line 2
..
Line N
)

Eu acho que a saída do tempo é legível como é, mas se o seu script vai medir em dias, etc., então confira man time para opções de formatação para a saída.

    
por 07.08.2011 / 22:09
2

Exemplo para tentar o timerscript.sh:

#!/bin/bash

#timing in minutes with %m
start='date +%m'
echo 'Start:' $start
#do something e.g. wait for 1.30 minutes 
sleep 90

'end='date +%m'
echo 'End: '$end
echo 'runtime: '$runtime
    
por 08.01.2016 / 12:37