【发布时间】:2012-08-20 10:35:48
【问题描述】:
我正在尝试使用 bash 脚本并行执行多项工作。这些作业是内存密集型的,所以我需要控制一次启动的数量。我所拥有的如下,它可以广泛使用,但有时延迟循环不知道刚刚启动的作业,因此启动了几个额外的作业,导致系统内存不足。
在延迟循环中的 while 语句之前添加一个 sleep 可以减少这个问题,但并不能完全消除它。任何人都知道治愈这种情况的方法。如果相关的话,我正在 Solaris 上运行。
#!/bin/bash
delay(){
while [ 8 -le $(ps -ef |grep myjob |wc -l) ]
do
sleep 1
done
}
./myjob -params1 &
delay
./myjob -params2 &
delay
./myjob -params3 &
delay
./myjob -params4 &
delay
.
.
.
【问题讨论】: