Pipe Viewer: una herramienta para ver el progreso de los comandos en Linux
Cuando trabaja en algunos procesos, a veces necesita visualizar la progresión de las operaciones de archivo. Algunos comandos tienen un parámetro para ayudarlo a ver la progresión, pero para aquellos que no lo tienen, debe usar otro método. Para mitigar este problema, puede utilizar un visor de tubería que indica la progresión de los diferentes procesos que inicia.
Que es pipe viewer
Visor de tubería (pv) es una herramienta CLI que le permite monitorear el progreso de los datos a través de una canalización proporcionando información como porcentaje completado, ETA, total de datos transferidos, tiempo transcurrido, etc. Si tiene algunos procesos, puede insertar el visor de canalizaciones como una tubería normal entre los diferentes procesos para tener una indicación visual de la progresión.
Opciones de la herramienta Visor de tuberías:
-s, --size <size>
: Suponga que la cantidad total de datos que se transferirán es TAMAÑO. Puede proporcionar un tamaño en bytes o utilizando unidades (b, kb, mb, gb, tb
).-N, --name <name>
: Prefije la información de salida con NAME.
1) Instalación de Pipe Viewer
El visor de tuberías se puede instalar a través de node.js como se muestra a continuación:
# npm install -g pv /usr/bin/pv -> /usr/lib/node_modules/pv/bin/pv.js + pv@1.0.1 added 15 packages in 0.953s
Ejemplos de uso del visor de canalizaciones
En esta parte, le mostraré algunos ejemplos diferentes que pueden ayudarlo a usar la herramienta pv
a) Muestra una progresión de copia dd
Puede mostrar la progresión de la copia de un archivo cuando usa el comando dd
# dd if=ubuntu-gnome-17.04-desktop-amd64.iso | pv | dd of=dest/ubuntu17 0.00% | 0 ETA | 1.36GB Transferred | 95.71MB/s2964416+0 records in 2964416+0 records out 1517780992 bytes (1.5 GB) copied, 14.7174 s, 103 MB/s 100.00% | 0 ETA | 1.41GB Transferred | 96.5MB/s2964416+0 records in 2964416+0 records out 1517780992 bytes (1.5 GB) copied, 14.7301 s, 103 MB/s
b) Una progresión de comando de gato
Puede decidir mostrar la progresión del comando cat al mostrar el contenido del archivo de registro de mensajes, por ejemplo
# cat /var/log/messages | pv Oct 13 03:36:02 localhost journal: Runtime journal is using 6.1M (max allowed 49.4M, trying to leave 74.1M free of 488.4M available → current limit 49.4M). Oct 13 03:36:02 localhost kernel: Linux version 4.9.36-x86_64-linode85 (maker@build.linode.com) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Thu Jul 6 15:31:23 UTC 2017 ........ ........ 100.00% | 0 ETA | 114.83KB Transferred | 114.83KB/s
c) Mostrar la progresión mientras se comprime
Durante algunas operaciones de compresión, es posible que necesitemos mostrar la progresión. Es posible de la siguiente manera
# tar -cf - /var/log/ | pv -N backlog | tar -C . -x tar: Removing leading `/' from member names backlog: 100.00% | 0 ETA | 660KB Transferred | 660KB/s
d) Visualizar una red SSH en vivo
Puede conectarse a un host a través de ssh y muestra la velocidad de transferencia en vivo. En nuestro caso, dirigiremos todos los datos transferidos a /dev/null
con una prueba local
# yes | pv | ssh paul@localhost "cat > /dev/null" The authenticity of host 'localhost (::1)' can't be established. ECDSA key fingerprint is SHA256:lqes2c9Obi9lCSepwdT8uovcsmhcboUAsylF69MENDE. ECDSA key fingerprint is MD5:38:67:a1:25:96:7b:69:02:f6:b8:ff:5d:ce:03:fd:a0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. paul@localhost's password: 0.00% | 0 ETA | 800.84MB Transferred | 17.04MB/s
El visor de tubería Unix de Rocco Musolino no muestra el porcentaje completado con la barra de progreso como el visor de tubería «normal» instalado a través del paquete. Podemos ver que el visor de tubería es interesante cuando nos enfrentamos a comandos que no permiten visualizar la progresión de los procesos.