假设我在 file 中有一个命令列表cmd_file
。
我通过以下方式运行这些命令:
cat cmd_file | parallel -k -I {} "{}"
其中一个命令失败。所有命令都使用完全相同的 CLI 工具和不同的输入。
现在,我必须一次运行一个命令来查找错误命令,方法是将命令列表替换为命令生成器循环(涉及更多):
for ...; do
# assemble the vars for the command
echo "<command>"
<command>
done
例如,是否有一种机制可以并行显示失败的命令或 stderr 上的执行顺序?
答案1
您可以指导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
或类似的东西会满足您的需求。
答案2
如果命令设置了退出值,--joblog
就是你的朋友。
答案3
例如,是否有一种机制可以并行显示失败的命令或 stderr 上的执行顺序?
GNU Parallel 20220722 有--colour-failed
:
parallel --tag --colour-failed "echo foo {}; {}" ::: true true false false true