xargs
permite processamento paralelo fácil. Aqui está um exemplo (que assume que sua versão do xargs suporta a opção -0
, que não é um requisito do POXIX. Se a portabilidade é um problema, simplesmente use echo
e elimine o -0
).
maxruns=2000
instances=50
printf '%smaxruns=2000
instances=50
printf '%s%pre%' {1..$maxruns} | xargs -0 -I, -n 1 -P $instances <program>
' {1..$maxruns} | xargs -0 -I, -n 1 -P $instances <program>
printf
gera os números de 1 a 2000 delimitados por caracteres NULL. Isso é canalizado para xargs
. A opção -0
notifica xargs
que os valores são delimitados por um caractere NULL em vez de espaço em branco. A chave -I
substitui o caractere seguinte (uma vírgula, pode ser qualquer sequência de caracteres) pelo valor de entrada. Como os valores de entrada são os números, que não precisamos, e não há outra vírgula na linha de comando, a entrada é simplesmente descartada. -n 1
fornece no máximo um argumento para <program>
. -P 50
não executa mais de 50 instâncias de <program>
de cada vez.