Gnu-Parallel

可以使 GNU Parallel 輸出在 linewise 模式下執行時執行的命令行嗎?

  • November 27, 2021

假設我在 file 中有一個命令列表cmd_file

我通過以下方式執行這些命令:

cat cmd_file | parallel -k -I {} "{}"

其中一個命令失敗。所有命令都使用具有不同輸入的完全相同的 CLI 工具。

現在,我必須一次執行所有命令,以通過將命令列表替換為命令生成器循環來查找錯誤命令(涉及更多):

for ...; do
 # assemble the vars for the command
 echo "<command>"
 <command>
done

例如,是否有一種機制可以並行顯示失敗的命令,或者將執行順序顯示到 stderr 上?

您可以指示parallel將執行的每個命令列印到標準輸出或標準錯誤。從man頁面:

-v  Print the job to be run on stdout (standard output).
   Can be reversed with --silent. See also -t.


-t  Print the job to be run on stderr (standard error).

所以也許:

for ...; do
 # assemble the vars for the command
 echo "<command>"
done |
parallel -v -k

或者如果您cmd_file已經準備好:

parallel -v -k < cmd_file

或類似的東西將滿足您的需求。

如果命令設置了退出值,--joblog就是你的朋友。

引用自:https://unix.stackexchange.com/questions/672313