xargs + pv = terminal en mal estado

xargs + pv = terminal en mal estado

Si quiero un pequeño indicador de progreso en mi operación de larga duración, puedo usarlo.visor de tuberías:

ssh pc2 cat some.file | pv -nC reading | gzip --fast | pv zipping > some.file.gz

esto me muestra una pequeña pantalla divertida que me dice qué tan rápido van las cosas:

reading:  470MiB 0:00:18 [26.7MiB/s] [   <=>                              ]
zipping: 99.6MiB 0:00:18 [5.61MiB/s] [          <=>                       ]

pero cuando hago un montón de cosas en paralelo, el resultado se estropea:

cat file.list | xargs -P 4 --replace={} sh -c "ssh pc2 cat {} | pv -nC r.{} | ..."

¿Hay alguna manera de hacer funcionar esto?

man pvdice que hay una manera de canalizar de forma circular la salida de pva una utilidad llamada dialog, pero no estoy familiarizado con eso

Respuesta1

Puede ejecutar cada instancia del programa en una nueva terminal o en un cuadro de diálogo. Para terminales

cat file.list | xargs -P 4 --replace={} gnome-terminal -x sh -c "ssh pc2 cat {} | pv -nC r.{} | ..."  

Para ver en el cuadro de diálogo zenity

 cat file.list | xargs -P 4 --replace={} sh -c "ssh pc2 cat {} | pv -nC r.{} | zenity --text-info | ..."

Respuesta2

Si tienes instalado GNU Parallel:

cat file.list | parallel --tmux -P 4 'ssh pc2 cat {} | pv -nC r.{} | ...'

Esto iniciará los trabajos en tmux. Luego puede adjuntar a tmux:

tmux attach

Si GNU Parallel no está empaquetado para su sistema, esto debería instalarlo en 10 segundos:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Para obtener más información: mire el vídeo de introducción para obtener una introducción rápida: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Siga el tutorial (man paralelo_tutorial). Tu línea de comando te amará por ello.

información relacionada