Если мне нужен небольшой индикатор прогресса моей длительной операции, я могу использоватьпросмотрщик труб:
ssh pc2 cat some.file | pv -nC reading | gzip --fast | pv zipping > some.file.gz
это дает мне забавный небольшой дисплей, показывающий, как быстро все происходит:
reading: 470MiB 0:00:18 [26.7MiB/s] [ <=> ]
zipping: 99.6MiB 0:00:18 [5.61MiB/s] [ <=> ]
но когда я делаю несколько вещей параллельно, вывод становится совершенно беспорядочным:
cat file.list | xargs -P 4 --replace={} sh -c "ssh pc2 cat {} | pv -nC r.{} | ..."
есть ли способ заставить это работать?
man pv
говорит, что есть способ обойти вывод pv
в утилиту под названием dialog
, но я с этим не знаком
решение1
Вы можете выполнить каждый экземпляр программы в новом терминале или в диалоговом окне. Для терминала
cat file.list | xargs -P 4 --replace={} gnome-terminal -x sh -c "ssh pc2 cat {} | pv -nC r.{} | ..."
Для просмотра в диалоговом окне zenity
cat file.list | xargs -P 4 --replace={} sh -c "ssh pc2 cat {} | pv -nC r.{} | zenity --text-info | ..."
решение2
Если у вас установлен GNU Parallel:
cat file.list | parallel --tmux -P 4 'ssh pc2 cat {} | pv -nC r.{} | ...'
Это запустит задания в tmux
. Затем вы можете прикрепиться к tmux
:
tmux attach
Если GNU Parallel не упакован для вашей системы, его установка займет 10 секунд:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Чтобы узнать больше: Посмотрите вступительное видео для краткого ознакомления: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Пройдитесь по учебнику (man parallel_tutorial). Ваша командная строка будет вам за это благодарна.