一次运行两个子进程的Shell脚本

时间:2020-01-28 03:29:53

标签: linux shell sh

让我们假设总共有10个子进程,我希望我的Shell脚本可以运行。为简单起见,子流程(即在Shell脚本中创建的流程)称为x1 ... 10。一个普通的shell脚本将有10行。假设每行都调用./xi。但是,为了最大限度地提高效率,我知道我的硬件允许同时启动两个子流程。因此,在任何时间点,这些进程中的两个都应运行。一旦完成,就启动下一个。它们的完成顺序不应该假设顺序,任何顺序都可以,因为它们被认为是独立的。在shell脚本中是否有一种优雅的方法?注意,每个x1 ... x10应该只运行一次。

1 个答案:

答案 0 :(得分:2)

seq 10 | xargs -P2 -I{} ./xi
  • seq 10-输出10个数字。我们不在乎它们。
  • xargs为每个输入运行命令
    • -P2一次运行两个进程。
    • -I{}替换输入行中命令中的每个{}。因此,只需丢弃输入即可。
    • ./x{}对输入中的每一行运行此命令。

最终答案:cat myshellscript.sh | xargs -L 1 -I CMD -P 2 bash -c CMD

myshellscript.sh是这样的文件:

./task-jsuqh
./task-siuww
./task-uqywh
./task-sdqaw
相关问题