2011-03-01 17 views

Respuesta

78

Usar el comando de tiempo, como otros han sugerido, es una buena idea.

Otra opción es usar la variable mágica integrada $ SECONDS, que contiene la cantidad de segundos desde que se inició la ejecución del script. Se puede decir:

START_TIME=$SECONDS 
dosomething 
ELAPSED_TIME=$(($SECONDS - $START_TIME)) 

creo que este es-fiesta específica, pero ya que estás en Linux, supongo que está utilizando bash.

33

Utilice el comando time. time ls /bin.

+0

'tiempo' es ** ** no es adecuado cuando se está ejecutando la secuencia de comandos compleja ** ** –

+4

@ shiplu.mokadd.im n? ¿Qué tal: 'tiempo (ls /; dormir 2; ls/bin)'. – Keith

+0

Si usa '\' y '()' se volvió más complejo. –

25

Try siguiente ejemplo:

START_TIME=$SECONDS 
# do something 
sleep 65 

ELAPSED_TIME=$(($SECONDS - $START_TIME)) 

echo "$(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec"  
#> 1 min 5 sec 
2

sólo para ayudar a alguien como yo, que reciben un error:

arithmetic expression: expecting primary: "-" 

Compruebe su shellscript que deberá comenzar con:

#!/bin/bash 

Salud!

3

Aquí está la secuencia de comandos para encontrar el tiempo transcurrido en milisegundos. Reemplace la línea sleep 60 con el código que desea ejecutar.

a=0 
while [ $a -lt 10 ] 
do 
START_TIME=`echo $(($(date +%s%N)/1000000))` 
sleep 3 
END_TIME=`echo $(($(date +%s%N)/1000000))` 
ELAPSED_TIME=$(($END_TIME - $START_TIME)) 
echo $ELAPSED_TIME 
if [ $a -eq 10 ] 
then 
    break 
fi 
a=`expr $a + 1` 
done 
+0

Solución razonable para milisegundos. – Blaf

Cuestiones relacionadas