Controlar velocidad y monitorear progreso con pv en Linux

El comando pv (Pipe Viewer) es una herramienta esencial para supervisar el flujo de datos a través de tuberías, además de permitir limitar la tasa de transferencia de I/O. Es especialmente útil en entornos donde se requiere controlar el uso del disco o red durante operaciones intensivas.

Copia de archivos con límite de velocidad

Para copiar un archivo limitando la velocidad a 1 megabyte por segundo:

pv -L 1m 11.sql > /tmp/12.sql

Copia de directorios con control de velocidad

Al copiar un directorio completo, se puede combinar tar y pv para aplicar límites de velocidad y mostrar el progreso real. Por ejemplo, copiar el contenido de test01/ a txt01/ a 2 MiB/s:

tar cf - "test01/" | pv -L 2m -s $(du -sb "test01/" | cut -f1) | tar xf - -C "txt01"

Este comando muestra una barra de progreso dinámica que indica el avance, la velocidad instantánea y el tiempo estimado.

Limitar la escritura al disco

Restringir la velocidad de escritura al disco cuando se crea un archivo comprimido:

tar zcf - txt01 | pv -L 2m > /tmp/txt01.tar.gz

Monitorear progreso durante compresión

Visualizar el progreso mientras se comprime un archivo mediante gzip:

pv 12.sql | gzip > 12.sql.gz

Transferencia remota con progreso detallado

Realizar una copia de seguridad remota entre dos servidores en red interna (192.168.1.217 → 192.168.1.220), asegurándose de que la conexión no sobrecargue la red:

ssh -p5110 192.168.1.217 tar zcf - /tmp/12.sql | pv --wait --bytes --rate-limit 80M > projectx.tar.gz

Progreso múltiple con etiquetas personalizadas

Para ver el progreso de cada etapa en una cadena de comandos (por ejemplo, transmisión y compresión), usar --name junto con --cursor:

ssh -p5110 192.168.1.217 tar cf - /tmp/12.sql | pv --wait --name ssh | gzip | pv --wait --name gzip > projectx.tgz

Salida esperada:

ssh:  233MiB 0:00:09 [24.4MiB/s] [          <=>             ]
gzip: 29.1MiB 0:00:09 [3.04MiB/s] [          <=>             ]

Cada línea representa una etapa distinta con su propio indicador de progreso.

Importación segura de datos en bases de datos activas

Al importar grandes volúmenes de SQL en una base de datos bajo carga, limitar la velocidad de entrada minimiza el impacto en el sistema:

pv -p -a -L2m 2020-09-14.hlz_ad.sql | mysql test01

Las opciones utilizadas son:

  • -p: muestra el progreso visual.
  • -a: incluye la veloicdad promeido.
  • -L2m: limita la tasa a 2 MiB/s.

Esto permite una carga gradual sobre el servidor, reduciendo el consumo de CPU y memoria.

Contar archivos que contienen texto específico

Buscar todos los archivos .c que contengan la palabra fopen, mostrando el número de resultados procesados en tiempo real:

find / -type f -name '*.c' -exec grep --files-with-match fopen \{\} \; | pv --line-mode

La salida muestra el número de archivos encontrados por segundo, útil para seguimiento en operaciones largas.

Etiquetas: pv bash shell scripting data transfer disk I/O control

Publicado el 8-21 14:23