¿Es posible iniciar un comando en muchos nodos al mismo tiempo?

¿Es posible iniciar un comando en muchos nodos al mismo tiempo?

¿Es posible iniciar un comando en 10 nodos al mismo tiempo?

Aquí está una parte de mi guión:

#! /bin/sh

nb_lignes=`wc -l $1 | cut -d " " -f1`
echo "$nb_lignes machines"

for i in $(seq $nb_lignes)
do
    machine=`head $1 -n $i | tail -1`
    ssh root@$machine -x "instruction"  

done

Respuesta1

Sí, lo es. El dshcomando proporciona exactamente lo que mencionas. Ejecutará el mismo comando en una lista de nodos especificados por parámetro, e incluso podría analizar stdout y stderr para la respuesta de cualquiera de estos nodos.

Para usarlo, recomiendo usar una autenticación de clave SSH para evitar que el dshcomando solicite la contraseña.

Hay una alternativa, llamada clusterssh. Esta es una versión interactiva del dshcomando, por lo que se abrirá una mini ventana con un shell por máquina, para que pueda ingresar un comando en un shell específico o un comando global para todas las ventanas.

Respuesta2

Usando GNU Parallel se ve así:

parallel --slf $1 --nonall instruction

Generará un trabajo por CPU.

GNU Parallel es un paralelizador general y facilita la ejecución de trabajos en paralelo en la misma máquina o en varias máquinas a las que tiene acceso ssh. A menudo puede reemplazar un forbucle.

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

Programación sencilla

En cambio, GNU Parallel genera un nuevo proceso cuando uno finaliza, manteniendo las CPU activas y, por lo tanto, ahorrando tiempo:

Programación paralela GNU

Instalación

Si GNU Parallel no está empaquetado para su distribución, puede realizar una instalación personal, que no requiere acceso de root. Se puede hacer en 10 segundos haciendo esto:

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

Para otras opciones de instalación consultehttp://git.savannah.gnu.org/cgit/parallel.git/tree/README

Aprende más

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

Mira los vídeos de introducción:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

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

Regístrese en la lista de correo electrónico para obtener ayuda:https://lists.gnu.org/mailman/listinfo/parallel

información relacionada