systemadmin.es > Script > pv – Pipe Viewer: Barra de progreso para pipes

pv – Pipe Viewer: Barra de progreso para pipes

Mediante el comando pv podemos ver el progreso de los datos transferidos por una pipe a medida que son consumidos.

Podemos utilizar el comando como un substituto de cat para ver el progreso:

$ pv cr_data.sql > /dev/null 
1.95GB 0:00:05 [ 402MB/s] [=======>      ]  8% ETA 0:00:51

Si lo utilizamos intercalado, el comando pv no puede saber el tamaño de los datos, por lo que no nos mostrará la barra de progreso, únicamente la velocidad:

# cat cr_data.sql | pv | cat > /dev/null
3.88GB 0:00:09 [ 442MB/s] [     <=>                      ]

Conociendo el tamaño de los datos, se lo podemos indicar mediante la opción -s para que nos muestre la barra:

# ls -hl cr_data.sql
-rw-r--r-- 1 jprats jprats 23G Feb  6 19:12 cr_data.sql
# cat cr_data.sql | pv -s 23g | cat > /dev/null
1.73GB 0:00:04 [ 443MB/s] [======>       ]  7% ETA 0:00:49

También lo podemos combinar con dialog para obtener un interfaz ncurses para la barra de progreso:

# (cat cr_data.sql | pv -s 23g -n | cat > /dev/null) 2>&1| dialog --gauge 'instalando...' 6 80

A dialog le pasamos por stdin os datos de pv (con la opción -n para obtener el progreso en texto), la opción –gauge con el texto a mostrar y finalmente el tamaño de la ventana que queremos mostrar. El resultado sería como el siguiente:

pv combinado con dialog

pv combinado con dialog

2 comments to “pv – Pipe Viewer: Barra de progreso para pipes”

  1. Hace poco había utilizado pv para un tema de una imagen de una tarjeta de memoria de la raspberry, pero no me habia fijado en la combinación de pv con dialog.

  2. Justamente yo tambien lo uso para copiar imágenes de RasPi, tal que así:

    # (pv -n raspi* | dd of=/dev/mmcblk0) 2>&1 | dialog --gauge "Running dd command, please wait..." 10 70 0
    

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>