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 pv
diz que há uma maneira de canalizar a saída de forma indireta pv
para 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.