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.