xargs + pv = terminal bagunçado

xargs + pv = terminal bagunçado

se eu quiser um pequeno indicador de progresso na minha operação de longa duração, posso usarvisualizador de tubos:

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

isso me dá uma pequena exibição divertida me dizendo o quão rápido as coisas estão indo:

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

mas quando faço um monte de coisas em paralelo, a saída fica toda confusa:

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

Existe alguma maneira de fazer isto funcionar?

man pvdiz que há uma maneira de canalizar a saída de forma indireta pvpara um utilitário chamado dialog, mas não estou familiarizado com isso

Responder1

Você pode executar cada instância do programa em um novo terminal ou em uma caixa de diálogo. Para terminal

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

Para visualizar na caixa de diálogo zenity

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

Responder2

Se você tiver o GNU Parallel instalado:

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

Isso iniciará os trabalhos em tmux. Você pode então anexar a tmux:

tmux attach

Se o GNU Parallel não estiver empacotado para o seu sistema, isso deverá instalá-lo em 10 segundos:

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

Para saber mais: Assista ao vídeo de introdução para uma introdução rápida: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Percorra o tutorial (man paralelo_tutorial). Sua linha de comando vai adorar você por isso.

informação relacionada