¿Cómo ejecutar un script en múltiples instancias? (Servidor de Ubuntu)

¿Cómo puedo ejecutar una secuencia de commands en varias instancias en el server de Ubuntu?

Por ejemplo, tengo un script de ejecución larga llamado scanner.sh colocado en /usr/bin/ , que deseo ejecutar el script en 10 instancias paralelas. ¿Cómo puedo comenzar las tareas paralelas (y pasarles diferentes banderas / opciones / parameters)?

y ¿cómo puedo detener las instancias?

Solutions Collecting From Web of "¿Cómo ejecutar un script en múltiples instancias? (Servidor de Ubuntu)"

 #**parallel_scaller.sh** # Script to async run scanner.sh # USAGE: $> bash parallel_scanner.sh "FLAGS FOR INSTANCE 1" ... "FLAGS FOR INSTANCES 10" $1=`echo $1 | sed 's/"//g'` $2=`echo $1 | sed 's/"//g'` $3=`echo $1 | sed 's/"//g'` $4=`echo $1 | sed 's/"//g'` $5=`echo $1 | sed 's/"//g'` $6=`echo $1 | sed 's/"//g'` $7=`echo $1 | sed 's/"//g'` $8=`echo $1 | sed 's/"//g'` $9=`echo $1 | sed 's/"//g'` $10=`echo $1 | sed 's/"//g'` bash scanner& $1 2>&1 bash scanner& $2 2>&1 bash scanner& $3 2>&1 bash scanner& $4 2>&1 bash scanner& $5 2>&1 bash scanner& $6 2>&1 bash scanner& $7 2>&1 bash scanner& $8 2>&1 bash scanner& $9 2>&1 bash scanner& $10 2>&1 

y coloca la tarea en segundo plano. 2> y 1 networkingirige STDOUT a STDERR.

Para finalizar los processs, escriba:

 $> ps aux | grep scanner $> kill $PIDS 

Usando GNU Parallel se ve así:

 parallel scanner {} ::: "--flags --for --instance 1" "--for 2" "--for 3" 

Desarrollará un trabajo por CPU. Para detener simplemente presione CTRL-C.

GNU Parallel es un paralelizador general y hace que sea fácil ejecutar trabajos en paralelo en la misma máquina o en varias máquinas a las que tiene acceso ssh. A menudo puede replace un bucle for .

Si tiene 32 trabajos diferentes que desea ejecutar en 4 CPU, una manera directa de paralelizar es ejecutar 8 trabajos en cada CPU:

Programación simple

En cambio, GNU Parallel genera un nuevo process cuando uno finaliza, manteniendo las CPU activas y ahorrando time:

Programación paralela de GNU

Instalación

Si GNU Parallel no está empaquetado para su distribución, puede hacer una installation personal, que no requiere acceso a la raíz. Se puede hacer en 10 segundos al hacer esto:

 (wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

Para otras opciones de installation, vea http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Aprende más

Vea más ejemplos: http://www.gnu.org/software/parallel/man.html

Mira los videos introductorios: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Repase el tutorial: http://www.gnu.org/software/parallel/parallel_tutorial.html

Regístrese para get la list de correo electrónico para get asistencia: https://lists.gnu.org/mailman/listinfo/parallel

Me gustaría proponerle que empiece a usar el sistema de gestión de configuration, preferiblemente Ansible.

Está escrito en Python, realmente fácil de usar para todos, para los novatos también.

Siga los documentos http://docs.ansible.com/ ¡ y comience!

Además de la respuesta sugerida, utilizo el siguiente command:

 nohup ./scanner.py -flag1 flag1value -flag2 flag2value & 

para crear una nueva instancia. Para ver todas las instancias de scanner.py ejecución, uso:

 ps aux | grep scanner.py 

Para matar una instancia específica, uso:

 kill -9 {PID} 

donde {PID} se obtiene del command ps aux , por ejemplo, kill -9 1234