Gnu-Parallel
可以使 GNU Parallel 輸出在 linewise 模式下執行時執行的命令行嗎?
假設我在 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
就是你的朋友。