我想提交一堆作业在后台运行,并在提交一定数量的作业时暂停,等待其中一个作业完成,以避免系统过载。在 Linux 上,我会这样做
x=0
while true
do
sleep 100 &
let x=x+1
if [[ $x -gt 10 ]]
then
# Wait for the next job to finish
wait -n
let x=x-1
fi
done
这在 Mac 上会失败,因为wait
可以获取 pid,但不能获取-n
参数。
还有其他方法可以做到这一点吗?与示例中不同,作业很慢,但运行时间可能有所不同,因此最先启动的作业可能不是最先完成的作业。如果没有更好的方法,我可以等待最老的作业,但我宁愿等待第一个作业完成。