:
# 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
