it-swarm.com.de

wie man linux software watchdog benutzt

Hallo kann mir jeder sagen, wie ich mit dem Software-Watchdog in Linux umgehen soll. Ich habe ein Programm "SampleApplication", das kontinuierlich läuft, und ich muss es neu starten, wenn es unerwartet hängt oder schließt.

Ich googelte über dieses Thema und fand, dass Linux Watchdog bei/dev/watchdog hat, aber ich weiß nicht, wie man es benutzt. Könnte mir jemand mit Beispiel helfen.

Meine Frage ist, wo ich meinen Anwendungsnamen und das Verzögerungsintervall für den Neustart angeben muss. Da ich Neuling in Linux bin, bitte ich Sie, wenn möglich, mit einem Muster kurz zu beschreiben. Vielen Dank

16

Die meisten Unix/Linux init-Programme verwalten Daemons für Sie und starten sie neu. Suchen Sie nach der Platzierung Ihres Dienstes in /etc/inittab. Oder Sie verwenden möglicherweise Upstart oder systemd.

Alle diese Programme laufen als PID 1 und es ist ihre Aufgabe, Systemprozesse zu überwachen und neu zu starten.

Von Ihrem Busybox-Tag aus würde ich davon ausgehen, dass Sie ein eingebettetes System betreiben. In diesem Fall sind die Init-Skripts des System V-Stils mit all ihren Shell-Skripts wirklich übertrieben. Sie sollten wahrscheinlich all das herausnehmen und durch Einträge in /etc/inittab- oder upstart- oder systemd-Jobs ersetzen.

13
Zan Lynx

Da die Moderatoren Nachbesserungen jetzt ignorieren, muss ich sie separat posten

Der Linux-Software-Watchdog startet den Computer neu und startet nicht nur den Prozess neu.

Nun, das stimmt einfach nicht, es ist sehr möglich, einzelne oder mehrere Prozesse neu zu starten, nachdem der Watchdog signalisiert, dass das System hängt. Sie können sogar den Neustart abbrechen oder einen SOFT-Neustart durchführen. Reparieren Sie "-Scripts/Binaries, die tun, was Sie wollen." Die busybox-Version von watchdog ist auf ein nahezu unbrauchbares Niveau reduziert ... Ich schätze, die Welt wird nie erfahren, warum die busybox-devs sich entschieden haben, die primären Funktionen zu verlassen. > Die Geschwindigkeitsverbesserungen sind nahezu nicht vorhanden, die Größenreduzierung kompensiert jedoch nicht den enormen Funktionsverlust./bin/bash ist ziemlich klein - kompiliere alles mit der Flagge "-Os", wenn die Größe von Bedeutung ist und du gut durchstarten kannst.

Oh und BITTE erstellen Sie KEINEN eigenen Watchdog - das wird Sie höchstwahrscheinlich mit unbehandelten Fehlern belasten und Ihr Leben eines Tages schlecht machen.

15
nope

Wie wäre es mit cron? Richten Sie einen kleinen Cron-Job ein, der jede Minute ausgeführt wird. Überprüfen Sie, ob Ihre Anwendung aktiv ist (mit ps). Falls nicht, starten Sie sie erneut.

Machen Sie ein kleines Skript wie folgt:

#!/bin/bash
if [ ! "$(pidof myapp)" ] 
then
  /path/to/myapp &
fi

Sie testen, ob "myapp" in der Prozessliste enthalten ist. "!" kehrt den Test um. Wenn es nicht da ist, läuft es "myapp". "&" ist nur so, dass es im Hintergrund beginnt.

Fügen Sie dies zu cron hinzu. Je nach System und Präferenzen gibt es mehrere Möglichkeiten, dies zu tun. Der klassische ist die Verwendung von Crontab. Es gibt eine Menge Dokumentation darüber, wie Sie Ihre Crontab-Linie festlegen, aber Sie möchten wahrscheinlich Folgendes:

* * * * * /path/to/the/script.sh > /dev/null

Dies führt Ihren Test jede Minute zu jeder Stunde durch ... Sie bekommen die Idee.

8
Janne

Mit /etc/inittab können Sie es in bestimmten Runlevels starten, und wenn es beendet ist, wird es automatisch neu gestartet

n:2345:respawn:/path/to/app

Dadurch wird es in den Laufebenen 2345 respawawnet, Sie benötigen wahrscheinlich nur 3 und 5, aber dies funktioniert gut und ist in Linux integriert.

4
darren102

Dokumentation für den Watchdog ist hier: http://linux.die.net/man/8/watchdog

Aber es klingt so, als wäre es nicht das, was Sie wollen. Der Linux-Software-Watchdog startet den Computer neu und startet nicht nur den Prozess neu.

Sie können leicht Ihren eigenen Watchdog erstellen. Beispielsweise könnte Ihr Programm regelmäßig eine temporäre Datei schreiben und ein Skript starten, das die Datei ab und zu überprüft und den Prozess neu startet, wenn er längere Zeit nicht aktualisiert wurde. 

2
TJD

Wenn Sie systemd verwenden, gibt es zwei Watchdogs: einen für Hardware (mit systemd.conf oder einen Watchdog-Daemon) und einen für Daemons, die als Services initialisiert werden . Wenn Sie systemd verwenden, sollten Sie Folgendes beachten:. http://0pointer.de/blog/projects/watchdog.html

1
fabatera

Sie können wdog ausprobieren, ein in c ++ geschriebenes Hilfsprogramm, das mit dem Kahless_9-Framework verknüpft ist. Der Quellcode hierfür kann von folgender Website heruntergeladen werden: https://github.com/zepher999/wdog und entsprechend den eigenen Bedürfnissen aktualisiert werden. Für die Zukunft sind noch einige Änderungen an der TODO-Liste erforderlich, die jedoch Ihren aktuellen Anforderungen entsprechen sollten.

Das Dienstprogramm erfordert eine CSV-Datei als Eingabe, in der alle zu überwachenden Prozesse mit ihren Argumenten enthalten sind. Beim Start startet das Dienstprogramm alle in der CSV-Datei angegebenen Prozesse und überwacht sie beim Beenden/Beenden. Anschließend wird der Prozess neu gestartet. 

Derzeit erlaubt wdog das Stoppen/Beenden von überwachten Prozessen sowie die Möglichkeit, das Dienstprogramm im heißen oder im kalten Modus zu starten. Der Hot-Modus ermöglicht es dem Dienstprogramm, zwischengespeicherte Datensätze zur Überwachung bereits gestarteter Prozesse zu verwenden, während der Start im Cold-Modus diese zwischengespeicherten Werte verwirft, um alle Prozesse zu starten.

Das Dienstprogramm hat auch die Möglichkeit, eine Instanz von sich selbst zu starten, um sich selbst zu überwachen, wodurch es einen Watchdog für den Watchdog gibt.

0
zepher

Sie können das Dienstprogramm "Monit" verwenden, um Ihre Dienste neu zu starten und zu überwachen Installieren Sie einfach den Befehl "apt-get install monit".

0
Akki

Wenn auf dieser Seite jemand auf der Suche nach einem Betriebssystem-Watchdog ist (was nicht direkt dem OP entspricht), dann brauchen Sie Folgendes:

Sudo apt-get install watchdog
service watchdog status
service watchdog start 

Um zu überprüfen, dass es funktioniert, führen Sie Folgendes aus:

tail -f /var/log/syslog | grep watchdog

Sie sollten etwas sehen wie:

Jul 25 22:03:35 nuc watchdog[14229]: still alive after 733 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 734 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 735 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 736 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 737 interval(s)

Ich hoffe, ich beantworte die Frage richtig. Alle anderen Antworten scheinen sehr unterschiedlich zu sein.

0