Automatischer Neustart bei Absturz [Duplikat]

8

Ich habe einen Java-Serverprozess, auf dem nativer Code ausgeführt wird, und die Möglichkeit, dass der gesamte Prozess aufgrund eines Problems im nativen Code abstürzt, ist immer vorhanden. Gibt es einen von * nix-Betriebssystemen angebotenen Mechanismus, mit dem ich den Prozess selbst neu erzeugen kann, wenn er abnormal existiert (Exit-Status! = 0)?

Gibt es ein Tool / Dienstprogramm, das diese Aufgabe für jede Art von Prozess automatisieren kann, indem gleichzeitig ein bestimmtes Maß an Steuerung / Konfiguration bereitgestellt wird?

Sasuke
quelle

Antworten:

15

Es gibt einige Optionen - Sie können es jederzeit in ein kurzes Shell-Skript wie das folgende einbinden: -

#!/bin/sh

RC=1
while [ $RC -ne 0 ]; do
   ./my-java-app
   RC=$?
done

Weit davon entfernt, elegant zu sein, kann aber ausreichen.

Andy Smith
quelle
Funktioniert gut! Noch eine Frage: Gibt es ein Tool / Dienstprogramm, das diese Aufgabe für jede Art von Prozess automatisieren kann, indem gleichzeitig ein bestimmtes Maß an Steuerung / Konfiguration bereitgestellt wird?
Sasuke
Klingt nach etwas, das ich schreiben sollte :-D
Andy Smith
Du solltest es wirklich erraten ;-) Übrigens, hochgestimmt und akzeptiert.
Sasuke
Möglicherweise möchten Sie auch die Verwendung von crontab zur Überwachung Ihres Prozesses in Betracht ziehen. Dieses Skript überlebt auch einen Neustart. servermonitoringhq.com/blog/how_to_keep_a_job_running_in_linux
Ian Purton
5

Was Sie suchen, wird normalerweise als Prozessüberwachung oder Prozessüberwachung bezeichnet . Es gibt viele Tools, die dies tun, normalerweise als Teil einer Reihe unterschiedlicher Funktionen. Upstart wird in der Linux-Welt immer häufiger für Systemdienste verwendet. Monit ist das erste, was ich für ein Programm versuchen würde, das nicht von root gestartet wurde, aber es gibt viele Alternativen.

Gilles 'SO - hör auf böse zu sein'
quelle
Diese Tools klingen interessant. Vorerst habe ich mich für den von Andy vorgeschlagenen einfachen Ansatz entschieden, aber ich werde diese Tools sicherlich berücksichtigen, wenn es um ein etwas komplexeres Prozessmanagement geht. Vielen Dank.
Sasuke
Übrigens, ich wollte nur bestätigen, dass Monit ein GPL-Tool ist. Wäre es in Ordnung, wenn es zur Überwachung proprietärer Apps verwendet würde, die auf meiner Box ausgeführt werden?
Sasuke
@sasuke: Die GPL schränkt nicht ein, wofür Sie das Programm verwenden können. Tatsächlich kommt es nur ins Spiel, wenn Sie GPL-Material verteilen .
Gilles 'SO - hör auf böse zu sein'
Ah, hab das verstanden. Mucho schätzte. :-)
Sasuke