我正在尝试在后台的几台 linux 机器上运行脚本。我的 bash 脚本如下所示:
for i in {1..1000}; do
for j in {1..20}; do
ssh -n -f remotehost$j "sh -c 'cd /blah/; nohup ./script.sh $i > /dev/null 2>&1 &'"
NPROC=$(($NPROC+1))
if [ "$NPROC" -ge 40 ]; then
echo "Waiting for work to finish"
wait
NPROC=0
fi
done
done
这是我尝试限制服务器上的负载,并且在任何给定时间只有 40 个进程在 20 个主机上运行。这不起作用,所有进程同时启动。您能否指导我如何等待远程后台进程完成或防止超过 n 个进程在给定的远程主机上启动。