![在 GNU Parallel 中抑制 stderr](https://rvso.com/image/1417399/%E5%9C%A8%20GNU%20Parallel%20%E4%B8%AD%E6%8A%91%E5%88%B6%20stderr.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