Existe uma maneira de executar o processo paralelamente no loop de um script bash [duplicado]

6

O código original pode ser assim:

 for i in *; do something.py $i; done

Eu queria saber se posso executar esses trabalhos paralelamente no backgroud, como:

 for i in *; do something.py $i &; done

Eu tentei e encontrei o & aqui não vai funcionar ..

Além disso, uma maneira melhor seria que o bash permitisse que 8 jobs (ou qualquer número) fossem executados juntos na fila no background , mas eu não sei como fazer isso ...

Alguém tem idéias sobre isso? Obrigado!

    
por Firegun 31.10.2012 / 03:49

1 resposta

7

Basta remover o caractere ; , portanto, no final:

 for i in *; do something.py $i & done

E para executar N instância do seu script ao mesmo tempo, consulte man 1 parallel

Veja o link

    
por 31.10.2012 / 03:52