![GNU Parallel で stderr を抑制する](https://rvso.com/image/1417399/GNU%20Parallel%20%E3%81%A7%20stderr%20%E3%82%92%E6%8A%91%E5%88%B6%E3%81%99%E3%82%8B.png)
GNU Parallel を使用して、コマンドを数千回同時に実行しています。
実行ログを取得するには、--files
と を使用します--results
。
実行中に適切な進行状況バーを表示するには、--eta
と を使用します--progress
。
ここで問題となるのは、STDERR がファイルにリダイレクトされているにもかかわらず、ターミナルに出力され、進行状況バーが壊れてしまうことです。
ターミナルへの STDERR の出力を抑制するにはどうすればよいですか? この情報はログ ファイルに残しておきたいので、コマンドを にラップするだけでは不十分です2>/dev/null
。
これまでのところ、私のコマンドラインは次のようになります。
cat input.txt | parallel -P 10 --progress --eta --files --results output_dir/ "./script.sh some-arg {}"
答え1
素敵なバーが欲しいなら、--bar
の代わりに をお勧めしますか--eta
? バージョン 20131122 以降が必要です。
これは機能しているようです。STDERR ファイルは印刷されないので、次のもの以外は STDERR には何も表示されません--bar
。
cat input.txt | parallel -P 10 --bar --files --results output_dir/ "./script.sh some-arg {}" >/dev/null
答え2
これは私にとってはうまくいきました:
parallel --bar --jobs 10 '(ffmpegthumbnailer -i "{}" -o "/tmp/${DIR}/{}.jpg" -f 2>/dev/null)' ::: *.mp4