我有以下代码,我试图在任何时间点运行至少4个进程。第一次启动4个进程,ps -ef检查完成的数量,如果例如3个正在运行,则循环动态地需要从数组中获取一个进程并运行。有人可以帮我这个,
ARR =( “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”)
TLEN = $ {#ARR [@]}
for((i = 1; i< $ {tLen}; i ++));
DO
for((j = i; j< = i + 3; j ++));
DO
nohup sh script.sh $ {arr [$ j]}&
cnt = ps -ef| grep scriptname | grep seqname | wc -l
//需要包含可以根据返回的计数生成进程的逻辑,(spawn = 4-cnt的进程没有)
完成
I = J + 1
完成**
答案 0 :(得分:0)
while循环内部等待,直到运行的进程数低于4,然后生成数组中的其他进程。
ARR =(" 1"" 2"" 3"" 4"" 5" " 6"" 7"" 8"" 9"" 10&#34)
TLEN = $ {#ARR [@]}
i=0
while (i<tLen)
do
cnt = `ps -ef| grep scriptname | grep seqname | wc -l`
while (cnt -eq 4)
do
echo "no of process running `ps -ef| grep scriptname | grep seqname | wc -l`"
sleep 10s
cnt = `ps -ef| grep scriptname | grep seqname | wc -l`
done
//chk for failures and spawn next process
nohup sh script.sh ${arr[$i]} &
i=i++
done