Processos paralelos de download

1

Usando um terminal Bash, como posso fazer com que 5 ± 2 processos cURL simultâneos sejam baixados a qualquer momento em um script, até que não haja mais links?

Pseudocódigo:

Links = {a.txt, b.txt, c.txt, d.txt ... x.txt, y.txt, z.txt}

Loop URLS in Links
    if (less than 5 cURL processes)
        cURL URL
    else
        wait until 1 cURL process stopped
    
por MZhQfmpXFz3WZ9h 28.04.2017 / 02:33

1 resposta

1

Tente isso como um ponto de partida (não testado)

#! /bin/bash
# LINKS is a list of space separated links use text below, otherwise
# replace first uncommented line below with
# for each in 'cat $LINKS'

for each in $LINKS
do 
    count='ps waux | grep "curl" | wc -l'
    until [ $count -gt 4 ]
    do
        count='ps | grep "curl" | wc -l'
        sleep 1
    done

    curl $each &
    fi

done
    
por 28.04.2017 / 03:42