Ist es möglich, einen Befehl auf 10 Knoten gleichzeitig zu starten?
Hier ist ein Teil meines Skripts:
#! /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
Antwort1
Ja, das ist es. Der dsh
Befehl liefert genau das, was Sie erwähnen. Er führt denselben Befehl auf einer Liste von Knoten aus, die durch Parameter angegeben werden, und Sie können sogar die Standardausgabe und Standardfehlerausgabe nach der Antwort eines dieser Knoten durchsuchen.
Für die Verwendung empfehle ich die Verwendung einer SSH-Schlüsselauthentifizierung, um die dsh
Abfrage des Kennworts durch den Befehl zu vermeiden.
Es gibt eine Alternative namens clusterssh
. Dies ist eine interaktive Version des dsh
Befehls, d. h. pro Computer wird ein Minifenster mit einer Shell geöffnet, sodass Sie einen Befehl in einer bestimmten Shell oder einen globalen Befehl für alle Fenster eingeben können.
Antwort2
Mit GNU Parallel sieht es folgendermaßen aus:
parallel --slf $1 --nonall instruction
Es wird ein Job pro CPU erzeugt.
GNU Parallel ist ein allgemeiner Parallelisierer und erleichtert die parallele Ausführung von Jobs auf derselben Maschine oder auf mehreren Maschinen, auf die Sie SSH-Zugriff haben. Es kann häufig eine for
Schleife ersetzen.
Wenn Sie 32 verschiedene Jobs haben, die Sie auf 4 CPUs ausführen möchten, können Sie die Parallelisierung ganz einfach durchführen, indem Sie auf jeder CPU 8 Jobs ausführen:
GNU Parallel startet stattdessen einen neuen Prozess, wenn einer fertig ist – wodurch die CPUs aktiv bleiben und Zeit gespart wird:
Installation
Wenn GNU Parallel nicht für Ihre Distribution gepackt ist, können Sie eine persönliche Installation durchführen, für die kein Root-Zugriff erforderlich ist. Dies ist in 10 Sekunden erledigt, indem Sie Folgendes tun:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Weitere Installationsoptionen finden Sie unterhttp://git.savannah.gnu.org/cgit/parallel.git/tree/README
Erfahren Sie mehr
Weitere Beispiele:http://www.gnu.org/software/parallel/man.html
Sehen Sie sich die Einführungsvideos an:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Gehen Sie das Tutorial durch:http://www.gnu.org/software/parallel/parallel_tutorial.html
Melden Sie sich für die E-Mail-Liste an, um Unterstützung zu erhalten:https://lists.gnu.org/mailman/listinfo/parallel