基于已完成的循环内部生成进程

时间:2017-09-19 03:47:18

标签: unix

我有以下代码,我试图在任何时间点运行至少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

完成**

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