Cómo monitorizar el progreso de una operación en la línea de comandos de Linux utilizando el comando PV

Si usted es un administrador de sistemas Linux, no hay duda de que debe estar pasando la mayor parte de su tiempo de trabajo en la línea de comandos – instalando y eliminando paquetes; monitoreando las estadísticas del sistema; copiando, moviendo, borrando cosas; depurando problemas; y más. Hay ocasiones en las que se dispara un comando y se tarda un tiempo en completar la operación. Sin embargo, también hay ocasiones en las que el comando que ejecutó se cuelga, lo que le deja adivinando lo que realmente está ocurriendo entre bastidores.

Normalmente, los comandos de Linux no proporcionan información relacionada con el progreso de la operación en curso, algo que es muy importante, especialmente cuando se dispone de poco tiempo. Sin embargo, eso no significa que no pueda hacer nada – existe un comando, llamado pv, que muestra información útil sobre el progreso relacionado con la operación en curso de la línea de comandos. En este artículo discutiremos este comando así como sus características a través de algunos ejemplos fáciles de entender.

Comando PV

Desarrollado por Andrew Wood, PV – que significa Pipe Viewer – muestra información relacionada con el progreso de los datos a través de una tubería. La información incluye el tiempo transcurrido, el porcentaje completado (con barra de progreso), la velocidad actual de producción, el total de datos transferidos y la ETA.

«Para utilizarlo, introdúzcalo en un pipeline entre dos procesos, con las opciones adecuadas. Su entrada estándar pasará a su salida estándar y el progreso se mostrará en error estándar,»

Lo anterior explica la página de manual del comando.

Descarga e instalación

Los usuarios de sistemas basados en Debian como Ubuntu pueden instalar fácilmente la utilidad ejecutando el siguiente comando en el terminal:

sudo apt-get install pv

Si está usando cualquier otra distribución de Linux, puede instalar el comando usando el gestor de paquetes instalado en su sistema. Una vez instalado correctamente, puede utilizar la utilidad de línea de comandos en varios escenarios (véase la siguiente sección). Vale la pena mencionar que la versión pv 1.2.0 ha sido utilizada en todos los ejemplos mencionados en este artículo.

Características y uso

Un escenario muy común con el que probablemente la mayoría de nosotros (que trabajamos en la línea de comandos en Linux) nos relacionaríamos es copiar un archivo de película de una unidad USB a su computadora. Si intenta completar la operación anterior utilizando el comando cp, tendrá que esperar ciegamente hasta que la copia esté completa o se produzca algún error.

Sin embargo, el comando pv puede ser útil en este caso. Aquí hay un ejemplo:

pv /media/himanshu/1AC2-A8E3/fNf.mkv> ./Desktop/fnf.mkv

Y aquí está el resultado:

Cómo monitorizar el progreso de una operación en la línea de comandos de Linux utilizando el comando PV


Así que, como puede ver arriba, el comando muestra mucha información útil relacionada con la operación en curso, incluyendo la cantidad de datos que han sido transferidos, el tiempo transcurrido, la velocidad de transferencia, la barra de progreso, el progreso en porcentaje, y la cantidad de tiempo restante.

El comando pv proporciona varios interruptores de visualización. Por ejemplo, puede utilizar -p para visualizar el porcentaje, -t para el temporizador, -r para la velocidad de transferencia, -e para eta y -b para el contador de bytes. Lo bueno es que no tendrás que recordar ninguna de ellas, ya que todas están habilitadas por defecto. Sin embargo, si sólo necesita información relacionada con un interruptor de visualización concreto en la salida, puede pasar ese interruptor en el comando pv.

También hay un interruptor de visualización -n que permite que el comando muestre un porcentaje entero, uno por línea en error estándar, en lugar del indicador de progreso visual normal. El siguiente es un ejemplo de este interruptor en acción:

pv -n /media/himanshu/1AC2-A8E3/fNf.mkv> ./Desktop/fnf.mkv

Cómo monitorizar el progreso de una operación en la línea de comandos de Linux utilizando el comando PV


Este interruptor de visualización en particular es adecuado en escenarios en los que desee canalizar la salida al comando dialog .

Continuando, también hay una opción de línea de comandos, -L, que le permite modificar la velocidad de transferencia de datos del comando pv. Por ejemplo, usé -L para limitar la velocidad de transferencia de datos a 2MB/s.

pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv> ./Desktop/fnf.mkv

Cómo monitorizar el progreso de una operación en la línea de comandos de Linux utilizando el comando PV


Como se puede ver en la captura de pantalla anterior, la velocidad de transferencia de datos se ha limitado en función de la dirección.

Otro escenario en el que pv puede ayudar es en la compresión de archivos. He aquí un ejemplo de cómo puede usar este comando mientras comprime archivos usando Gzip:

pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip> ./Desktop/fnf.log.gz.

Cómo monitorizar el progreso de una operación en la línea de comandos de Linux utilizando el comando PV


Conclusión

Como has observado, pv es una pequeña utilidad útil que podría ayudarte a ahorrar tu precioso tiempo en caso de que una operación de línea de comandos no se esté comportando como se esperaba. Además, la información que muestra también se puede utilizar en scripts de shell. Recomendaría encarecidamente este comando; vale la pena intentarlo.

Fuente: este post proviene de Vida Tecno, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
Creado:
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Etiquetas: Linux

Recomendamos

Relacionado

Linux

¿No sería genial si pudieras obtener notificaciones emergentes cuando terminan esas largas tareas que se ejecutan desde la línea de comandos? Bueno, tú puedes. En realidad, crear notificaciones de escritorio desde la línea de comandos es muy sencillo con el comando notify-send. Puede usar notify-send en sus scripts o establecer que se ejecute siguiendo un comando largo que acaba de escribir en la ...

Linux

Mientras trabaja con la línea de comandos, hay ocasiones en las que puede enviar manualmente un correo electrónico para comunicar información de un solo renglón, por ejemplo, un comando complejo o una nota importante para usted o para un amigo. Normalmente, esto requiere que abra un navegador web, inicie sesión en su cuenta de correo electrónico, enmarque un mensaje de correo electrónico que conte ...

Linux

Si utiliza Linux, probablemente llegará el momento en que necesite saber más acerca de su red. Varias herramientas pueden ayudarle a hacer esto, y algunas son más complicadas que otras. El comando ss es algo en lo que puede confiar al estar instalado en muchos equipos, por lo que es muy útil saberlo. ¿Qué es el Comando ss? Aunque el nombre del comando de dos letras puede parecer arcano, en realida ...

Linux

Dos potentes características del shell de la línea de comandos de Linux son la redirección y las tuberías que permiten que la salida (o incluso la entrada) de un programa se envíe a un archivo o a otro programa. Es posible que ya haya utilizado estas funciones sin ser consciente de ello. Siempre que se ha utilizado el signo «>» en un comando o «|» entonces se ha utilizado la ...

Linux

ImageMagick es una suite de herramientas para Linux que le permite manipular imágenes desde la línea de comandos. El comando «convert» le permite realizar conversiones y transformaciones de imágenes sin embargo, hay varias otras herramientas incluidas en la suite, algunas de las cuales le permiten trabajar con los datos Exif en fotos JPEG. Es probable que su distribución de Linux ya teng ...

Linux

Enviar un correo electrónico es algo que a menudo no tienes que pensar dos veces. Simplemente encienda su cliente de correo electrónico, ya sea basado en la web o en el escritorio, escriba un mensaje, introduzca la dirección de correo electrónico del destinatario y haga clic en «Enviar». ¿Qué sucede si es necesario que envíe correo electrónico desde la línea de comandos, por ejemplo, par ...