Ist es möglich, einen Befehl auf mehreren Knoten gleichzeitig zu starten?

Ist es möglich, einen Befehl auf mehreren Knoten gleichzeitig zu starten?

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 dshBefehl 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 dshAbfrage des Kennworts durch den Befehl zu vermeiden.

Es gibt eine Alternative namens clusterssh. Dies ist eine interaktive Version des dshBefehls, 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 forSchleife 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:

Einfache Terminplanung

GNU Parallel startet stattdessen einen neuen Prozess, wenn einer fertig ist – wodurch die CPUs aktiv bleiben und Zeit gespart wird:

GNU Parallel-Planung

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

verwandte Informationen