Cómo monitorear el progreso de los comandos de Linux (con pv y progreso)
Publicado: 2022-01-29 En lugar de volar a ciegas, use los comandos pv
y progress
de Linux para seguir 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á de su viaje. Sabes cuándo despegaste. Sabes cuánto tiempo se espera que tome 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, normalmente puede cambiar la pantalla de video para mostrar un mapa con la posición de su avión. También obtiene algunas estadísticas, como la hora prevista de llegada (ETA), lo cual es excelente.
Iniciar un comando desde la ventana de la terminal a veces puede parecer un vuelo de larga distancia sin una pantalla de video. No tienes nada que dar ninguna indicación si todo está bien o si el proceso se ha colgado, ni qué tan cerca está de completarse. Un cursor parpadeante no es muy informativo.
Los comandos pv
y progress
le brindan algunas estadísticas y un poco de retroalimentación visual. Puede ver qué tan cerca está el proceso de completarse. Eso significa que obtiene una ETA para sus procesos en ejecución. En comparación con mirar un cursor, eso gana sin dudas.
instalacion fotovoltaica
Debes instalar pv
.
Para instalar pv
en Ubuntu usa este comando:
sudo apt-get install pv
Para instalar pv
en Fedora use este comando:
sudo dnf instalar pv
Para instalar pv
en Manjaro usa este comando:
sudo pacman-syu pv
Usando pv
pv
significa visor de tuberías. La tubería tiene que estar involucrada en el comando en alguna parte. Aquí hay un ejemplo en el que estamos canalizando una imagen ISO a través de zip
para crear 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
La información que nos da 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 restante 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 múltiples archivos y carpetas con pv
necesitamos usar un pequeño truco. Usamos tar
para mover los archivos por nosotros.
tar -c archivos-de-ayuda/ | vv | tar -x -C Documentos/
La porción tar -c help-files/
del comando le indica a tar
que cree ( -c
) un archivo de los archivos en la carpeta de archivos de ayuda. Esto se canaliza a través de pv
para que obtengamos una visualización del progreso. Luego se vuelve a canalizar al 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.
Por lo tanto, los archivos y carpetas que se encuentran 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.
Uso de 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 retroalimenta directamente a tar
para extraer los archivos. Si nuestro objetivo es copiar archivos, se cumple. 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 que se usan 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 stdout y escriba su salida en la ventana del terminal. No vemos esa salida porque se canaliza a través de pv
.
El nombre real del archivo será el nombre de archivo al que canalizamos la salida de pv
. En este caso, es “help-files.tgz”.
tar -czf - ./archivos-de-ayuda/ | pv > archivos-de-ayuda.tgz
Obtenemos los mismos indicadores de progreso que antes, y el archivo de almacenamiento se crea para nosotros.
RELACIONADO: Cómo comprimir y extraer archivos usando el comando tar en Linux
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 desactivarán. 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 del porcentaje completado.
- -t : muestra el tiempo transcurrido.
- -e : muestra la hora estimada de llegada .
- -r : muestra la tasa de transferencia de datos.
- -b : muestra el recuento 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 - ./archivos-de-ayuda/ | pv - p > archivos-de-ayuda.tgz
Esto desactiva todas las demás opciones de visualización. pv
proporciona solo el elemento de porcentaje completado.
Debido a que pv
no obtiene una cifra de porcentaje completado de tar
, la barra de progreso se reemplaza con un indicador en movimiento. No hay cifra porcentual.
Usando pv con wc
Podemos usar pv
para canalizar un archivo de texto (o archivos) a wc
. wc
luego 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 a 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.
Instalando el comando de progreso
El comando progress
brinda el mismo tipo de información útil que pv
, pero funciona con un conjunto específico de comandos de Linux.
Para instalar progress
en Ubuntu, use este comando:
sudo apt-obtener progreso de instalación
Para instalar progress
en Fedora, use este comando:
Progreso de instalación de sudo dnf
Para instalar progress
en Manjaro, use este comando:
sudo pacman-syu progreso
El progreso de los comandos funciona con
Escribir progress
en una ventana de terminal y presionar Entrar le dará una lista de los comandos con los que funciona el progress
.
Progreso
Uso de progreso con tuberías
Hay dos técnicas que podemos usar para monitorear comandos con progress
. La primera es usar tuberías.
El comando tar
está en la lista de comandos admitidos que progress
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 en la carpeta de archivos de ayuda, y el archivo se llamará "help.tgz".
Estamos canalizando eso en progress
y usando la opción -m
(supervisar) para que progress
siga informando sobre el proceso hasta que se haya completado.
tar -czf ayuda.tgz ./archivos-de-ayuda/ | progreso -m
La ventana del terminal mostrará el progreso del comando tar
a medida que crea el archivo.
A medida que se procesa cada expediente, se lista, con la siguiente información:
- El identificador 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 admitidos, los informes de progress
al respecto.
Uso del progreso en el modo de supervisión continua
Puede utilizar progress
en un modo de supervisión continua en tiempo real utilizando la opción -M (supervisar).
Escriba el siguiente comando en una ventana de terminal:
progreso -M
progress
informará que no hay comandos ejecutándose para monitorear. Pero no vuelve a la línea de comandos. El progress
espera hasta que se inicia un comando que puede monitorear. A continuación, comenzará automáticamente a informar sobre ello.
En otra ventana de terminal, escriba un comando que esté en la lista de comandos que el progreso puede monitorear.
Vamos a usar cat
. Los comandos que terminan demasiado rápido no se registrarán con progress
, por lo que enumeraremos el contenido de un archivo de texto muy largo.
gato palabras.pagina
En la ventana de la terminal con progress
, verá las estadísticas del comando cat
a medida que se ejecuta y se completa.
Cuando cat
termina de listar, el progress
del archivo vuelve a su estado de espera.
Cada vez que uno de los comandos sobre los que puede informar realiza una tarea importante, progress
lo monitoreará automáticamente e informará al respecto.
Eso es bastante bueno.
100% completado
Elimine las conjeturas de preguntarse cómo está funcionando un comando de ejecución prolongada y tómese un descanso de contemplar su cursor con pv
y progress
.
Comandos Linux | ||
archivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · cola · stat · ls · fstab · eco · menos · chgrp · chown · rev · mirar · cadenas · tipo · renombrar · zip · descomprimir · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · parche · convertir · rclone · triturar · srm | |
Procesos | alias · pantalla · top · agradable · renice · progreso · strace · systemd · tmux · chsh · historia · at · lote · gratis · cual · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · tiempo de espera · pared · sí · matar · dormir · sudo · su · hora · groupadd · usermod · grupos · lshw · apagar · reiniciar · detener · apagar · contraseña · lscpu · crontab · fecha · bg · fg | |
Redes | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp · curl · wget · quién · whoami · w · iptables · ssh-keygen · ufw |
RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas