xargs + pv = めちゃくちゃなターミナル

xargs + pv = めちゃくちゃなターミナル

長時間実行中の操作の進行状況を示す小さなインジケーターが必要な場合は、パイプビューア:

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 pvpvの出力を というユーティリティに迂回的にパイプする方法があるそうです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) を実行してください。コマンド ラインが役に立つはずです。

関連情報