GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man einen laufenden Prozess unter Linux neu starten (oder zurücksetzen)?

Ich habe zwei Linux-Systeme, die über Sockets kommunizieren (Desktop- und ARM-basiertes Entwicklungsboard).

Ich möchte meine Clientanwendung (die auf einem Entwicklungsboard läuft) neu starten (oder zurücksetzen), wenn der Server eine bestimmte vordefinierte Nachricht sendet. Ich möchte Linux nicht neu starten (rebooten), ich möchte nur, dass sich die Client-Anwendung automatisch neu startet.

Ich kann nicht verstehen, wie es gemacht werden sollte.

Akzeptierte Antwort:

Der normale Weg, dies zu tun, besteht darin, Ihr Programm beenden zu lassen und ein Überwachungssystem zu verwenden, um es neu zu starten. Die init Programm bietet ein solches Überwachungssystem. Es gibt viele verschiedene Init-Programme (SysVinit, BusyBox, Systemd usw.) mit völlig unterschiedlichen Konfigurationsmechanismen (es wird immer eine Konfigurationsdatei geschrieben, aber der Speicherort und die Syntax der Datei unterscheiden sich), also schauen Sie in der Dokumentation desjenigen nach, das Sie verwenden verwendest. Konfigurieren Sie init so, dass es Ihr Programm beim Booten oder auf explizite Anforderung startet und es neu startet, wenn es stirbt. Es gibt auch schickere Überwachungsprogramme, aber Sie klingen nicht so, als würden Sie sie brauchen. Dieser Ansatz hat viele Vorteile gegenüber dem Programm, das den Neustart selbst durchführt:Es ist Standard, sodass Sie eine Reihe von Diensten neu starten können, ohne sich darum kümmern zu müssen, wie sie erstellt werden; es funktioniert sogar, wenn das Programm aufgrund eines Fehlers stirbt.

Es gibt einen Standardmechanismus, um einem Prozess das Beenden mitzuteilen:Signale. Senden Sie Ihrem Programm ein TERM-Signal. Wenn Ihr Programm eine Bereinigung durchführen muss, schreiben Sie einen Signalhandler. Das schließt nicht aus, dass Sie einen programmspezifischen Befehl haben, um es herunterzufahren, wenn Sie einen Verwaltungskanal haben, um ihm Befehle wie diesen zu senden.


Linux
  1. So installieren Sie vtop unter Linux

  2. Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux läuft?

  3. Wie kann ich mit Python unter Linux überprüfen, ob ein Prozess noch läuft?

  4. Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux läuft?

  5. So legen Sie die Prozess-ID in Linux für ein bestimmtes Programm fest

So listen Sie laufende Prozesse in Linux auf:Ein Leitfaden für Anfänger

So beenden Sie einen Prozess in Linux

So finden Sie heraus, wie lange ein Prozess unter Linux läuft

So finden und beenden Sie laufende Prozesse in Linux

So beenden Sie den laufenden Linux-Prozess auf einem bestimmten Port

Wie man einen Prozess unter Linux beendet