Ejecute el mismo command varias veces en segundo plano

¿Cómo es posible ejecutar múltiples commands y hacer un background de ellos usando bash?

Por ejemplo:

$ for i in {1..10}; do wait file$i &; done 

donde wait es un binary personalizado.

En este momento me sale un error:

 syntax error near unexpected token `;' 

cuando se ejecuta el command anterior.

Una vez establecidos los commands, deberían ejecutarse en paralelo.

El & , como ; es un operador de terminador de list . Tienen la misma syntax y se pueden usar indistintamente (dependiendo de lo que quieras hacer). Esto significa que no quiere, ni necesita, command1 &; command2 command1 &; command2 , todo lo que necesitas es command1 & command2 .

Entonces, en tu ejemplo, podrías simplemente escribir:

 for i in {1..10}; do wait file$i & done 

y cada command de wait se lanzará en segundo plano y el ciclo pasará inmediatamente al siguiente.

Para mayor compatibilidad, use el formulario posix en lugar de la expansión:

 for i in $(seq 1 10); do (./wait file$i &); done 

Puede agrupar los commands y colocar los commands agrupados en segundo plano. Me gusta :

 $ for i in {1..10}; do ((wait file$i)&); done 

¿Su nombre binary realmente se llama wait ? No lo recomiendo, porque wait es un shell incorporado.

Creo que bash no analiza bien un ciclo de una línea que inicia processs en segundo plano. Te sugiero que cambies el código a:

 $ for i in {1..10}; do ./wait file$i & echo "Running 'wait' using PID=$!..."; done