Ejecuto mi propio script para volcar bases de datos en archivos cada noche.
Quería contar el tiempo (en segundos) que tarda en volcar cada base de datos, así que estaba tratando de escribir algunas funciones para ayudarme a lograrlo, pero estoy teniendo problemas.Temporizador simple para medir los segundos que tomó una operación para completar
No soy un experto en scripts en bash, así que si lo estoy haciendo mal, simplemente dígalo e idealmente sugiera una alternativa, por favor.
Aquí está la secuencia de comandos:
#!/bin/bash
declare -i time_start
function get_timestamp {
declare -i time_curr=`date -j -f "%a %b %d %T %Z %Y" "\`date\`" "+%s"`
echo "get_timestamp:" $time_curr
return $time_curr
}
function timer_start {
get_timestamp
time_start=$?
echo "timer_start:" $time_start
}
function timer_stop {
get_timestamp
declare -i time_curr=$?
echo "timer_stop:" $time_curr
declare -i time_diff=$time_curr-$time_start
return $time_diff
}
timer_start
sleep 3
timer_stop
echo $?
El código debería realmente ser bastante explica por sí mismo. Los comandos echo
son solo para la depuración.
espero que la salida sea algo como esto:
$ bash timer.sh
get_timestamp: 1285945972
timer_start: 1285945972
get_timestamp: 1285945975
timer_stop: 1285945975
3
Ahora bien, este no es el caso, lamentablemente. Lo que consigo es:
$ bash timer.sh
get_timestamp: 1285945972
timer_start: 116
get_timestamp: 1285945975
timer_stop: 119
3
Como se puede ver, el valor que var time_curr
obtiene del comando es una marca de tiempo válida, pero devolver este valor hace que sea cambiado a un número entero entre 0 y 255.
¿Puede alguien explicarme por qué sucede esto?
PS. Obviamente, este es solo mi script de prueba del temporizador sin ninguna otra lógica.
ACTUALIZACIÓN sólo para estar perfectamente claro, yo quiero que esto sea parte de una escritura del golpe muy similar a this one, donde yo quiero medir cada ciclo del bucle.
A menos que por supuesto que puedo hacerlo con time
, entonces sugiera una solución.
No tiene que usar 'date' para esto. Bash tiene una variable '$ SECONDS' que se actualiza automáticamente y muestra el número de segundos desde que se inició el script (o shell). Incluso se puede configurar y aún se autoevaluará. –
Dennis, esta es la solución más simple que puedo encontrar y es exactamente lo que estaba buscando. Si lo dejas como un aswer, lo aceptaré felizmente. –
http://unix.stackexchange.com/questions/53841/how-to-use-a-timer-in-bash –