与预定义的顺序优先级并行运行 bash 作业

ddr*_*hel 4 bash shell gnu-parallel

我想在具有 >2 个内核的机器的 2 个内核上运行 3 个作业(A、B、C)。我知道:

运行时(A)>运行时(C)

运行时(B)>运行时(C)

预先未知是runtime(A)>runtime(B)还是runtime(A)<runtime(B)。

我想做的是:

  • 在核心 1 上启动 A
  • 在核心 2 上启动 B
  • 任一完成后,在一个空闲核心上启动 C

这是如何实现的(如果可能,在 bash 中)?

Mar*_*ell 5

只需告诉GNU Parallel它可以使用 2 个内核:

parallel -j 2 ::: jobA jobB jobC
Run Code Online (Sandbox Code Playgroud)

请注意,作业将按照您指定的顺序运行,但输出的顺序可能不同。如果这是一个问题,请添加-k参数以保持输出有序。