Mehrere *fast* identische Prozesse auf einem Linux-Server

Mehrere *fast* identische Prozesse auf einem Linux-Server

Was ist die beste Möglichkeit, mehrere nahezu identische Java-Prozesse auf demselben Linux-Server auszuführen?

Erklärung zur Umgebung:

Wir führen eine Reihe von Java-Prozessen aus, die ein Berechnungsraster bereitstellen. Der einzige Unterschied zwischen den Prozessen ist der Befehlszeilenparameter, der den Knotennamen identifiziert. So etwas wie:

(Prozess 1) Java -DNodeNumber=1 Berechnungsknoten

(Prozess 2) Java -DNodeNumber=2 Berechnungsknoten

(Prozess 3) Java -DNodeNumber=3 Berechnungsknoten

(Prozess 4) Java -DNodeNumber=4 Berechnungsknoten

Das Skript, das jeden Prozess startet, ist relativ einfach, aber nicht trivial, da etwa 15 weitere Parameter benötigt werden - SIE SIND FÜR ALLE PROZESSE IDENTISCH

Ich muss in der Lage sein, einen Prozess neu zu starten, wenn er mit dem GLEICHEN NodeNumber-Parameter fehlschlägt. Mit anderen Worten: Wenn Knoten 3 fehlschlägt, muss ich ihn als Knoten 3 neu starten.

Antwort1

Ich würde sagen, wenn ein Prozess fehlschlägt, muss er repariert werden, damit er nicht noch einmal fehlschlägt.

Um das zu tun, was Sie erwarten, würde so etwas ausreichen (ungetestet, Verwendung auf eigene Gefahr):

#!/bin/bash
for i in $(seq 1 4)
do
  (
    echo "Starting node $i..."
    while ! java -DNodeNumber=$i CalculationNode
    do
      sleep 1
      echo "Restarting node $i..."
    done
  ) &
done
wait

Jeder Prozess muss mit dem Exitcode Null enden, um die Schleife zu unterbrechen. Andernfalls wird er vom Skript neu gestartet.

Antwort2

Julianos Lösung funktioniert vielleicht in einfachen Fällen, aber sie deckt nicht jede Situation ab. Beispielsweise könnte einer Ihrer Prozesse trotz eines Fehlers mit dem Exit-Status 0 beendet werden, wenn ein Fehler im Fehlerbehandlungscode vorliegt. Oder er könnte in eine Sackgasse geraten oder in eine andere Art von Endlosschleife geraten, ohne etwas Sinnvolles zu tun.

Wenn Sie also eine ausgefallenere Lösung wünschen, versuchen SieNagios. Es ermöglicht Ihnen, Plugins für spezielle Überwachungsaufgaben zu schreiben.

Antwort3

Sie können immer verwendendaemontoolsum Ihre Prozesse zu überwachen und neu zu starten.

verwandte Informationen