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

Running bash jobs in parallel with predefined order prioritization

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

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

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

如果运行time(A)>运行time(B) or 运行time(A)<运行time(B) .

我想做的是:

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

在 Bash 4.3(2014 年发布)或更高版本中很容易:

A &
B &
wait -n # wait for any child to finish
C &
wait # for everyone to finish

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

parallel -j 2 ::: jobA jobB jobC

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