martes, 6 de febrero de 2018

PV - Barra de progreso en la terminal


La consola de comandos o terminal de GNU/Linux es la herramienta más poderosa de este Sistema Operativo, hay un dicho que dice: “Todo se puede hacer desde la terminal“. Usar la terminal de GNU/Linux es recomendable porque es posible realizar casi todas las tareas de forma más rápida mediante comandos.
Cuando ejecutamos algunos comandos, no sabemos cuando deben terminar o si ha dado algún error durante su ejecución, es difícil distinguir entre estas dos situaciones al no contar con una barra de progreso que nos indique si el comando sigue avanzando o si por el contrario a dado error y es necesario detenerlo o reiniciarlo.

Pero en GNU/Linux casi todo tiene solución. Saber el progreso de una operación en tiempo real no es para nada complicado en la Terminal de Linux, sólo necesitamos instalar el programa PV (Pipe Viewer), desde los repositorios de Debian GNU/Linux.

pv (Pipe Viewer): es una herramienta basada en terminales para monitorear el progreso de los datos a través de una canalización. Se puede insertar en cualquier tubería normal entre dos procesos para dar una indicación visual de qué tan rápido están pasando los datos, cuánto tiempo ha tardado, cuán cerca está de completarse, y una estimación de cuánto tiempo pasará hasta su finalización.

NOTA: pv alguna vez no es capaz de mostrar el ETA (Estimated Time of Arrival) (Tiempo estimado de acabado) pues es debido que en ese caso conoce el tamaño del fichero con el que este trabajando en ese momento.


Instalar PV

Como siempre hacemos en este blog, y con la ayuda del program synaptic, marcamos para instalar el paquete pv

apt-get install pv



Modo de uso.

pv tiene varios metodos por lo que se recomienda la lectura del manual de pv desde consola, usando el siguiente comando: man pv

Básicamente pv lo usamos usando los siguientes metodos:

- pv opciones archivo
- pv archivo.extension > archivo.extension
- pv opciones | comando > archivo.extension
- comando1 | pv | comando2

Ejemplos reales de utilización de pv.

- Ejemplo de copiar un archivo

pv Debian.txt > /home/diego/txt/Debian.txt

- Ejemplo de copiar un archivo de una ubicación a otra ubicación.

pv Debian_testing.iso > /home/diego/isos/Debian_testing.iso

- Ejemplo de copia usando dd:

dd if=Debian_testing.iso | pv | dd of=/dev/sda
dd if=/dev/sda | pv | dd of=/root/image.iso


- Ejemplo de copiar una imagen a un disco, omitiendo errores:

pv -EE /dev/sda > disk-image.img

- Ejemplo de escribir una imagen en un disco:

pv disk-image.img > /dev/sda

- Ejemplo de comprimir uno o varios archivos a un archivo zip

pv /var/log/syslog | zip > syslog.zip

- Ejemplo de descomprimir un archivo

gunzip -c archivo.gz | pv > archivo

- Ejemplo de copia de seguridad de una carpeta, en tar y ver su progreso.

tar -czf - ./programas/ | (pv -p --timer --rate --bytes > backup.tgz)

- Ejemplo de como funciona en la suma md5sum, para comprar una imagen .iso:

pv Debian_testing.iso | md5sum



Ejemplos reales












No hay comentarios: