使用xargs每行执行一个带有一个命令的文件

时间:2016-04-19 13:11:42

标签: shell parallel-processing xargs

我有一个由一系列命令组成的文件,每行一个。例如:

./run_test_1.sh fileA ./run_test_1.sh fileB ./run_test_2.sh fileC

我想使用xargs并行运行它们。

1 个答案:

答案 0 :(得分:1)

尝试一下:

printf "%s\0" $(cat afile) | xargs -0 -P 3 -I xxx bash -c xxx

xargs将同时从afile运行3个命令。

命令中的特殊字符或其选项将破坏此解决方案。

----

以下版本似乎是安全的,但afile中的所有命令都按顺序执行:

printf "%s\0" "$(cat afile)" | xargs -0 -P 3 -I xxx bash -c xxx

-P 3在这里毫无用处。