En lugar de volar a ciegas, use los comandos pv y progress de Linux para rastrear el progreso de un comando. Estas utilidades le darán barras de progreso para comandos que normalmente no tienen ninguna. También verá un tiempo estimado hasta la finalización.
Si está en un vuelo de larga distancia en un avión sin pantallas de video en los respaldos de los asientos, no es fácil saber qué tan lejos está el viaje. Sabes cuando despegaste. Sabes cuánto tiempo se espera que demore el vuelo. Pero, ¿cómo saber si va por buen camino, a tiempo o muy atrasado? Si no desea ver la película durante el vuelo, generalmente puede cambiar la pantalla de video para mostrar un mapa con la posición de su avión en él. También obtienes algunas estadísticas, como la hora prevista de llegada (ETA), que es genial.
Iniciar un comando desde la ventana de la terminal a veces puede parecer un vuelo de larga distancia sin una pantalla de video. No tiene nada que indique si todo está bien o si el proceso se ha bloqueado, ni qué tan cerca de completarse. Un cursor parpadeante no es muy informativo.
Los comandos pv y progress le brindan algunas estadísticas y una pequeña retroalimentación visual. Puede ver lo cerca que está el proceso para completar. Eso significa que obtiene una ETA para sus procesos en ejecución. Comparado con mirar un cursor, eso gana sin duda alguna.
Instalación de pv
Debe instalar pv.
Para instalar pv en Ubuntu use este comando:
sudo apt-get install pv
Para instalar pv en Fedora use este comando:
sudo dnf install pv
Para instalar pv en Manjaro use este comando:
sudo pacman -Syu pv
Usando pv
pv significa visor de tubería. La tubería tiene que estar involucrada en el comando en alguna parte. Aquí hay un ejemplo donde estamos canalizando una imagen ISO a través de zip para hacer un archivo zip comprimido de la ISO.
Para ralentizar los comandos lo suficiente como para poder tomar una captura de pantalla, algunos de los archivos de los ejemplos utilizados para este artículo se almacenaron en un USB externo antiguo y lento llamado SILVERXHD.
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip
Cómo hacer una copia de seguridad de los juegos de Steam en Linux
La información que nos proporciona pv se puede ver en la línea inferior de la pantalla.
De izquierda a derecha, la información que se muestra es:
Los datos transferidos hasta ahora.
El tiempo transcurrió hasta ahora.
La tasa de transferencia de datos (rendimiento).
Una barra de progreso y una cifra de porcentaje completado.
El tiempo estimado que queda antes de la finalización (ETA).
Copiar un archivo con pv
Para copiar un archivo con salida de pv, use este comando:
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso
Obtenemos un informe de progreso a medida que se copia el archivo.
Copiar varios archivos con pv
Para copiar varios archivos y carpetas con pv, necesitamos usar un pequeño truco. Usamos tar para mover los archivos por nosotros.
tar -c help-files/ | pv | tar -x -C Documents/
La parte tar -c help-files / del comando indica a tar que cree (-c) un archivo de los archivos en la carpeta help-files. Esto se canaliza a través de pv para que obtengamos una visualización del progreso. Luego se canaliza de nuevo a tar para la última parte del comando. El archivo se extrae (-x) y el directorio se cambia (-C) a Documentos antes de la extracción.
Entonces, los archivos y carpetas que están en los archivos de ayuda se copian en la carpeta Documentos, con una pantalla de progreso.
La salida es ligeramente diferente esta vez.
No obtenemos una ETA. La barra de progreso ahora muestra un indicador en movimiento. Muestra que el proceso está activo, pero no crece de izquierda a derecha como una barra de progreso tradicional. pv se limita a mostrar la información que puede extraer del proceso que se está canalizando.
Usando pv y tar para crear un archivo
Copiar archivos con pv y tar no nos deja con un archivo de almacenamiento. Tar crea una especie de archivo «virtual», que se alimenta directamente a tar para extraer los archivos. Si nuestro objetivo es copiar archivos, eso se logra. Pero, ¿y si queremos crear un archivo de almacenamiento?
Todavía podemos usar tar para crear un archivo de almacenamiento y obtener un informe de progreso de pv. Las opciones utilizadas con tar son -c (crear archivo), -z (comprimir con gzip) y -f (nombre de archivo del archivo).
Tenga en cuenta que estamos usando – como nombre de archivo, lo que hace que tar use stdouty escribir su salida en la ventana de terminal. No vemos esa salida porque se canaliza a través de pv.
El nombre real del archivo será el nombre del archivo al que canalizamos la salida de pv. En este caso, es «help-files.tgz».
tar -czf - ./help-files/ | pv > help-files.tgz
7 excelentes alternativas de aplicaciones de Linux para aplicaciones de Windows
Obtenemos los mismos indicadores de progreso que antes, y el archivo de almacenamiento se crea para nosotros.
< p>
Las opciones de visualización de pv
Hay una serie de opciones que puede usar con pv para cambiar los detalles de su informe.
Si usa alguna de estas opciones, todas las demás opciones se desactivan. Entonces, si desea tener tres de las opciones de visualización en uso, debe especificar esas tres opciones.
Usar pv sin ninguna opción es lo mismo que usar las opciones -pterb.
-p: muestra el porcentaje completo. Esta es la barra de progreso y la cifra de porcentaje completado.
-t: muestra el tiempo transcurrido.
-e: muestra la ETA.
-r: muestra la tasa de transferencia de datos.
-b: muestra el número de bytes (datos transferidos hasta el momento).
-n: muestra el porcentaje como un número entero. Esto imprime el porcentaje completado como una cifra entera, con cada nueva actualización en una nueva línea.
Repitamos el último comando y pasemos la opción -p (porcentaje completado) a pv.
tar -czf - ./help-files/ | pv - p > help-files.tgz
Usando pv con wc
Podemos usar pv para canalizar un archivo de texto (o archivos) a wc. wc contará los retornos de carro, caracteres y palabras y pv nos dará un informe de progreso.
Aquí estamos canalizando todos los archivos «.page» en el directorio de archivos de ayuda en wc.
Cuando wc se completa, podemos ver nuestro recuento de retornos de carro (líneas), caracteres y palabras de todos los archivos “.page” en la carpeta de archivos de ayuda.
Instalación del comando de progreso
El comando de progreso da el mismo tipo de información útil como pv, pero funciona con un conjunto específico de comandos de Linux.
Para instalar el progreso en Ubuntu, use este comando:
sudo apt-get install progress
Para instalar el progreso en Fedora, use este comando:
sudo dnf install progress
Para instalar el progreso en Manjaro, use este comando:
sudo pacman -Syu progress
El progreso de los comandos funciona con
Al escribir progreso en una ventana de terminal y presionar Enter, obtendrá una lista de los comandos con los que funciona el progreso.
progress
Usar el progreso con tuberías
Hay dos técnicas que podemos usar para monitorear los comandos con el progreso. El primero es utilizar tuberías.
El comando tar está en la lista de comandos compatibles que el progreso puede monitorear, así que usemos tar.
Las opciones que usaremos son las opciones estándar -c (crear archivo), -z (comprimir con gzip) y -f (nombre de archivo). Vamos a crear un archivo comprimido de todo lo que esté en la carpeta de archivos de ayuda, y el archivo se llamará “help.tgz”.
Estamos canalizando eso en progreso y usando la opción -m (monitor) para que el progreso siga informando sobre el proceso hasta que se haya completado.
tar -czf help.tgz ./help-files/ | progress -m
La ventana de la terminal mostrará el progreso del comando tar mientras crea el archivo.
A medida que se procesa cada archivo, se enumera con la siguiente información:
El ID del proceso.
El nombre del proceso.
Porcentaje completado.
Datos procesados y tamaño total del archivo.
Tasa de datos (rendimiento).
Tiempo restante estimado (ETA).
Es posible que se sorprenda al ver aparecer un segundo conjunto de datos. Este primer conjunto de datos es para tar. El segundo es para gzip. tar llama a gzip para realizar la compresión. Debido a que gzip está en la lista de comandos compatibles, el progreso informa sobre él.
Uso del progreso en el modo de monitorización continua
Puede utilizar el progreso en un modo de monitorización continua en tiempo real mediante la opción -M (monitor).
Escriba el siguiente comando en una ventana de terminal:
progress -M
El progreso informará que no hay comandos ejecutándose para monitorear. Pero no regresa a la línea de comando. el progreso espera hasta que se inicia un comando que puede supervisar. Entonces comenzará a informar automáticamente sobre él.
En otra ventana de terminal, escriba un comando que esté en la lista de comandos que el progreso puede monitorear.
Vamos a utilizar cat. Los comandos que terminan demasiado rápido no se registrarán con el progreso, por lo que enumeraremos el contenido de un archivo de texto muy largo.
cat words.page
En la ventana de la terminal con el progreso, verá las estadísticas del comando cat mientras se ejecuta y trabaja hasta su finalización.
Cuando cat termina de enumerar, el progreso del archivo vuelve a su estado de espera.
Cada vez que uno de los comandos sobre los que puede informar realiza una tarea considerable, el progreso lo supervisará automáticamente y lo informará.
Eso es bastante bueno.
100% completado
Elimine las conjeturas de preguntarse cómo está funcionando un comando de larga duración y tómese un descanso de contemplar su cursor con pv y progreso.