Tengo una lista/cola de 200 comandos que necesito ejecutar en un shell en un servidor Linux.Procesamiento paralelo desde una cola de comandos en Linux (bash, python, ruby ... lo que sea)
Solo quiero tener un máximo de 10 procesos en ejecución (desde la cola) a la vez. Algunos procesos tardarán unos segundos en completarse, otros procesos tomarán mucho más tiempo.
Cuando finaliza un proceso, quiero que el siguiente comando se "extraiga" de la cola y se ejecute.
¿Alguien tiene código para resolver este problema?
La elaboración adicional:
Hay 200 piezas de trabajo que hay que hacer, en una cola de algún tipo. Quiero tener al menos 10 trabajos a la vez. Cuando un hilo termina una pieza de trabajo, debe pedirle a la cola la siguiente pieza de trabajo. Si no hay más trabajo en la cola, el hilo debería morir. Cuando todos los hilos han muerto, significa que todo el trabajo se ha realizado.
El problema real que intento resolver es usar imapsync
para sincronizar 200 buzones de correo de un servidor de correo antiguo a uno nuevo. Algunos usuarios tienen buzones de correo grandes y tardan mucho tiempo en sincronizarse, otros tienen buzones de correo muy pequeños y se sincronizan rápidamente.
Esto funcionó exactamente como esperaba. Escribí un código para generar el Makefile. Terminó siendo más de 1000 líneas. ¡Gracias! – mlambie
+1 ¡Esto es muy inteligente! – progo
Encontré que si alguno de los comandos sale con un código de error, make saldrá, impidiendo la ejecución de trabajos futuros. En algunas situaciones, esta solución es menos que ideal. ¿Alguna recomendación para este escenario? –