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

Shell script for running subprocesses two at a time

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

seq 10 | xargs -P2 -I{} ./xi
  • seq 10 - 输出 10 个数字。我们不关心他们。
  • xargs 运行 每个输入一个命令
    • -P2 运行s 一次两个进程。
    • -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