Executa solicitações de curl em paralelo no bash

16

Qual é a melhor maneira de executar 5% de solicitaçõescurl em parallel de um script bash? Não posso executá-los em série por motivos de desempenho.

    
por Justin 09.12.2012 / 09:17

3 respostas

28

Use '&' depois de um comando para um processo em segundo plano, e 'esperar' para esperar que eles terminem. Use '()' ao redor dos comandos se você precisar criar um sub-shell.

#!/bin/bash

curl -s -o foo http://example.com/file1 && echo "done1" &
curl -s -o bar http://example.com/file2 && echo "done2" & 
curl -s -o baz http://example.com/file3 && echo "done3" &

wait
    
por 09.12.2012 / 10:54
9

xargs tem um parâmetro "-P" para executar processos em paralelo. Por exemplo:

wget -nv http://en.wikipedia.org/wiki/Linux -O- | egrep -o "http://[^[:space:]]*.jpg" | xargs -P 10 -r -n 1 wget -nv

Referência: link

    
por 23.05.2014 / 08:27
5

Eu uso o paralelo do gnu para tarefas como esta.

    
por 09.12.2012 / 15:41