Temporizando las ejecuciones de los comandos desde consola
En Linux existe una forma fiable de medir los tiempos que se invierten a la hora de ejecutar los comandos gracias a la herramienta time, que viene de serie con la mayoría de distribuciones Linux y que nos va permitir evaluar la velocidad con la que se ejecuta cualquier comando que lancemos desde la terminal.
Comando: time Etimología: tiempo (hora). Sintaxis: time [comando] |
Devuelve el tiempo de ejecución total, el tiempo que el sistema ha dedicado a ese usuario y el tiempo de preparación del programa o comando pasado como argumento.
Para comprende fácilmente cómo funciona este comando, imaginemos que queremos saber el tiempo que se tarda en copiar un fichero a un determinado directorio:
debian:/home/user# time cp minix.iso /tmp/so real 0m0.082s user 0m0.000s sys 0m0.012s |
Este comando tiene tantas aplicaciones como podamos imaginar. Una aplicación podría ser, conocer el tiempo que tarda una descarga. Para ello os he preparado el siguiente script:
# Creamos un nuevo descriptor de fichero. exec 3>&1 # Ejecutamos el comando, y mandamos el stderr (2>) a stdin (1>) asi lo capturamos con la variable. # Por ultimo redireccionamos la salida del comando al nuevo descriptor (3>) tiempo=`/usr/bin/time -f %E wget -b $1 2>&1 &>&3` # Borramos el descriptor que creamos. exec 3>&- echo "Tiempo total de descarga: $tiempo" |
Para lanzarlos simplemente tecleamos:
debian:/home/user# bash descargador.sh http://ruta.com/fichero Continuing in background, pid 31786. Output will be written to `wget-log'. Tiempo total de descarga: 0:00.23 |