por favor, escriba una meta que quiera lograr. para medir el tiempo de trabajo del script use el timecomando (time ./script.sh), para imprimir el tiempo actual use el datecomando, etc.
Podrías usar el timecomando incorporado de Linux . Desde la página del manual:
comando de tiempo [argumentos]
time determina qué información mostrar sobre los recursos utilizados por el COMANDO desde la cadena FORMAT. Si no se especifica ningún formato en la línea de comando, pero se establece la variable de entorno TIME, su valor se utiliza como formato.
Me doy cuenta de que esta es una pregunta bastante antigua, pero esta es la forma en que lo hago para cualquier cosa cuando quiero / necesito saber cuánto tiempo tardó en ejecutarse.
Bash tiene un temporizador de segundos incorporado en forma de una variable interna llamada SECONDS(ver: aquí para otras variables internas)
Ponga SECONDS=0antes de lo que sea que esté verificando el tiempo de ejecución. Debe estar después de cualquier entrada del usuario para obtener un buen resultado, por lo que si solicita información, póngala después de la (s) solicitud (es).
Luego, pon esto al final de lo que estás comprobando:
if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Si solo desea saber el tiempo en segundos, puede simplificar lo anterior para:
echo "Completed in $SECONDS seconds"
Como ejemplo:
read -rp "What's your name? ""name"
SECONDS=0
echo "Hello, $name"if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Un atajo para aquellos que no desean un formato de tiempo tan elaborado: date +%T -d "1/1 + $SECONDS sec"(limitado a menos de 24 h, pero también puede adaptarse para agregar días)
time
comando (time ./script.sh), para imprimir el tiempo actual use eldate
comando, etc.time yourprogram.sh
que explicó @Marius CotofanaRespuestas:
Si desea la duración en segundos, en la parte superior use
Y al final
fuente
Podrías usar el
time
comando incorporado de Linux . Desde la página del manual:Para cronometrar el
cleanup.sh
guión, use:fuente
time
que está usando. hackernoon.com/…Me doy cuenta de que esta es una pregunta bastante antigua, pero esta es la forma en que lo hago para cualquier cosa cuando quiero / necesito saber cuánto tiempo tardó en ejecutarse.
Bash tiene un temporizador de segundos incorporado en forma de una variable interna llamada
SECONDS
(ver: aquí para otras variables internas)Ponga
SECONDS=0
antes de lo que sea que esté verificando el tiempo de ejecución. Debe estar después de cualquier entrada del usuario para obtener un buen resultado, por lo que si solicita información, póngala después de la (s) solicitud (es).Luego, pon esto al final de lo que estás comprobando:
Si solo desea saber el tiempo en segundos, puede simplificar lo anterior para:
Como ejemplo:
fuente
date +%T -d "1/1 + $SECONDS sec"
(limitado a menos de 24 h, pero también puede adaptarse para agregar días)fuente
@anask hace una solución inteligente para esta respuesta, solo recomiendo usar el nativo en su
$SECONDS
lugar para crear uno nuevoEl propósito de
printf
y la división es convertir los segundos transcurridos a las correspondientes unidades Horas, Mins, Secs, respectivamente.fuente