Social

Una de las formas más rapidas y faciles de dar un aspecto más profesional a las ejecuciones de tus scripts en Bash, es controlar el progreso de los diferentes procesos que puedan suceder en él. Hay diferentes maneras de añadirlos, todas muy sencillas y bastante bonitas.

¡Vamos a verlas!

Whiptail

Podemos utilizar whiptail de una manera sencilla. Cualquier valor porcentil que le pases, lo mostrará. Además puedes indicar el mensaje que quieres de dar. Por defecto ocupará toda la pantalla.

Si tienes un proceso y sabes cuando va a terminal (el valor maximo o total) puedes realizar una regla de 3 para ir mostrando el progreso.

Vamos a poner un ejemplo, haciendo un bucle con for en el que iremos incrementando el valor de $i, y haremos que espere un segundo. La variable total es el maximo, y también el tiempo que tardará.

Puedes encontrar mucha información para usar whiptail si usas man (man whiptail)

Este el script:

#!/bin/bash

total=10

{
for i in $(seq 1 $total);
do
let var1=$i*100
let var2=$var1/$total
echo $var2
sleep 1
done
} | whiptail --gauge "Testeando el script..." 6 50 0

Y el resultado por pantalla, así:

PV

pv se utiliza para proporcionar la capacidad de monitorear el progreso de una aplicación dada que carezca de la funcionalidad mencionada. Se puede utilizar colocando un operador de tubería (|) entre dos procesos.

Necesitas instalar pv:

sudo apt-get install pv

Y puedes ejecutarlo así, por ejemplo, para crear una barra de progreso mientras archivas un zip:

pv history.log | zip>$HOME/Documents/history.zip

Lightbox

Progress

Es una pequeña herramienta para monitorear el progreso de los comandos (cp, mv, dd, tar, etc.) en Linux.

No és el más bonito porque no muestra una barra como tal, pero nos puede servir.

Necesitaremos instalar progress:

sudo apt-get install progress

Y lo podemos usar detrás de un comando con un pipe:

dd if=/dev/zero of=test.img bs=1G count=1
cp test.img /tmp/ |progress -q

¿Sencillo verdad? Conoces otras maneras de hacerlo? ¡Compártelo en los comentarios!


Xavi Gonzalez

Actualmente DevOps Engineer en MotoGP (Dorna Sports). Apasionado de GNU/Linux y del software libre. Me gusta trastear con cualquier gadget, y rodar en moto.

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*