: # jobmon - example of "load balancing": keep fixed number of concurrent # processes running set -- proc1 proc1 proc1 proc1 proc1 maxproc=2 minproc=$maxproc pids= while [ $# -gt 0 ] do echo >&2 "$0: starting max. $maxproc processes" while [ `echo $pids | wc -w` -lt $maxproc ] && [ $# -gt 0 ] do "$1" & pids="$pids $!" shift done echo >&2 "$0: after start:" `echo $pids | wc -w` "processes:" $pids echo >&2 "-------------------" while [ `echo $pids | wc -w` -ge $maxproc ] do sleep 1 running= for pid in $pids do kill -0 $pid 2>/dev/null && running="$running $pid" done pids=$running echo >&2 "$0:" `echo $pids | wc -w` "still running:" $pids done done