GNU Parallel で stderr を抑制する

GNU Parallel で stderr を抑制する

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

関連情報