Necesito obtener el tiempo de ejecución de un programa tan pronto como se cierra y se me ocurrió esto
start=`date +"%M"`
while [ `pgrep vlc` ];do
echo vlcopen > /dev/null
done
stop=`date +"%M"`
[ $stop -lt $start ]&&time=$[ 60-$start+$stop ]||time=$[ $stop-$start ]
echo $time > time.txt
y hace el trabajo, pero es muy ineficiente y requiere mucho uso de la taza, ¿cómo hago esto de manera más eficiente?
Respuesta1
Una opción es utilizartime
Nota: Bash tiene una palabra clave, time
así que si la tienes:
time some command
ese es usado, SHELL_GRAMMAR: fiesta
Lo que time
se encuentra en el hombre time
suele ser algo así como/usr/bin/time
$ type -t time
keyword
Punto principal al utilizar elno bashEl tiempo son características como -v
(GNU time
).
Ver también:¿Qué significan "real", "usuario" y "sys" en la salida de time(1)?
Respuesta2
Utilizar elSECONDS
variable de bash:
SECONDS=0
# do stuff here, such as
sleep 5
duration=$SECONDS
echo "The stuff took $duration seconds to complete"
La eficiencia se gana eliminando la necesidad de generar procesos externos.