Watchdog

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe eine kleine Frage zum Thema Watchdog.
    Google und die Forensuche hat mir leider nicht geholfen.

    Der Pi besitzt ja einen Watchdog der den kompletten Pi im Falle dann neustartet.
    Bis jetzt habe ich aber nur Beispiele mit dem Watchdog Deamon gefunden.
    Der Deamon setzt den Watchdog doch alle paar Sekunden wieder zurück damit kein Reboot durchgeführt wird, soweit sollte das doch stimmen?

    Jetzt möchte ich aber den Watchdog über mein eigenes Script zurück setzen und nicht mit dem Deamon, das sollte doch auch gehen oder?
    Aber wie mache ich das?
    Kann mir da bitte jemand helfen.. :)

    Vielen Dank

  • Hallo.


    Der Deamon setzt den Watchdog doch alle paar Sekunden wieder zurück damit kein Reboot durchgeführt wird, soweit sollte das doch stimmen?


    Jaein... die Zeit(en) zum zurücksetzen bestimmst du selbst ind der /etc/watchdog.conf


    Jetzt möchte ich aber den Watchdog über mein eigenes Script zurück setzen und nicht mit dem Deamon, das sollte doch auch gehen oder?


    Was verstehst du unter "zurücksetzen" ?... den Watchdog-Timer quasi neu aufziehen ?.
    Das macht doch deine definierte Aktivität von selbst.
    Es ist doch grade der Sinn der Sache dass das System bwz. deine Softwareaktivität von einem unabhängigen Baustein überwacht wird.
    -Hier- ist es recht gut erklärt.
    Wird z.B. ein best. File nicht zyklisch beschrieben, schlägt er zu.
    Sicher kannst du das umgehen, und z.B. per Software nen Timer aufziehen, der vor Ablauf neu getriggert werden muss, aber das ist kein echter Watchdog, denn deine Software muss das abhandeln...gerade das soll ja vermieden werden.

    gruß root


  • Was verstehst du unter "zurücksetzen" ?... den Watchdog-Timer quasi neu aufziehen ?.

    Genau das meine ich.
    Damit der Pi nicht rebootet.

    Ok dann formuliere ich meine Frage etwas um.

    Ich habe ein Script dass alle paar Sekunden einen Datenbankeintrag schreibt.
    Wenn jetzt aber keine Datenbankeinträge mehr geschrieben werden für 5 Sekunden, warum auch immer, soll ein Reboot durchgeführt werden.

    Ist das auch machbar?

    Einmal editiert, zuletzt von Harry89 (22. April 2015 um 18:09)

  • Hallo.

    Ich habe ein Script dass alle paar Sekunden einen Datenbankeintrag schreibt.
    Wenn jetzt aber keine Datenbankeinträge mehr geschrieben werden für 5 Sekunden, warum auch immer, soll ein Reboot durchgeführt werden.

    Ist das auch machbar?


    Genau das ist machbar.
    Deine Datenbank hat nen File-Namen, dessen Zugriff du kontunierlich mit dem Deamon auf Zugriffe überprüfst.Wird innerhalb eines von dir festgelegten Zeitrahmens kein Zugriff stattfinden ...->reboot.
    Diesen Namen trägst in die /watchdog.conf ein, definierst deine festgelegte Zeit dazu, und fertig.
    Ist wie im oben angzeigten Link als Beispiel gezeigt.

    Dann viel Erfolg.

    gruß root

    Einmal editiert, zuletzt von root (22. April 2015 um 18:27)


  • Deine Datenbank hat nen File-Namen, dessen Zugriff du kontunierlich mit dem Deamon auf Zugriffe überprüfst. Wird innerhalb eines von dir festgelegten Zeitrahmens kein Zugriff stattfinden ...->reboot.
    Diesen Namen trägst in die /watchdog.conf ein, definierst deine festgelegte Zeit dazu, und fertig.

    Schon mal den Artikel gelesen den du verlinkt hast? Würd ich dir mal raten :D :fies:

    Die Zeit kann man nicht einstellen. Wird ein mal in /dev/watchdog geschrieben, erwartet der SoC alle 60 Sekunden einen erneuten Schreibzugriff. Findet der nicht statt nimmt er an das sich die Software (das OS) aufgehangen hat und kappt kurzfristig die Stromversorgung -> hard reset.

    change = 1000 ist für andere Dateien, nicht /dev/watchdog

    Man muss einen Unterschied machen zwischen einem Reset vom Software-Watchdog-Daemon und dem des Broadcom SoC's.
    Der Software-Watchdog-Daemon ist primär dafür dar regelmäßig in /dev/watchdog zu schreiben. Der SoC-Watchdog prüft davon unabhängig ausschließlich /dev/watchdog
    Läuft die Software noch nicht wenn man das Kernel-Module läd und anschließend "cat > /dev/watchdog" ausführt, resettet der SoC den PI sofern nicht erneut innerhalb 60 Sekunden in /dev/watchdog geschrieben wurde!

    Das steht aber auch alles in dem von dir verlinkten Artikel. Also einfach mal lesen!


    Davon abgesehen sind die anderen Einstellungen die man in /etc/watchdog.conf vornehmen kann mit Vorsicht zu genießen. Zum Beispiel ist es Quatsch den PI zu resetten nur weil dieser eine CPU Auslastung hat, insbesondere innerhalb der letzten Minute (max-load-1).
    Aber auch der ping ist imho Schwachfug. Stattdessen lieber ein Script nutzen was dann die Schnittstelle managed, statt den kompletten PI zu killen.

    Dieser Hard Reset kann das Dateisystem beschädigen, was eben einem Stecker ziehen gleich kommt. Wenn das System in genau diesem Moment einen Schreibzugriff auf die SD macht, ist die Datei oder was auch immer korrupt/kaputt.

    Deshalb sind diese ping und max-load Geschichten eher kritisch. Leider erwähnt der von dir verlinkte Artikel dies mit keiner Silbe sondern empfiehlt sogar dieses einzuschalten... Deshalb: Nicht alles blind ohne selber nachdenken machen!

    Wohingegen das mit /dev/watchdog eher unbedenklich ist denn wenn die Software, also das Betriebssystem, nicht innerhalb von 60 Sekunden da rein schreibt, schreibt es höchst wahrscheinlich auch nichts anderes mehr :fies:

  • hm...erhebt sich die Frage wer da lesen kann...


    Schon mal den Artikel gelesen den du verlinkt hast? Würd ich dir mal raten :D :fies:


    change = 1000 ist für andere Dateien, nicht /dev/watchdog


    genau das habe ich weiter oben gesagt.

    aber ok, solche Diskussionen führen zu nix.Thema ist für mich abgehakt.


  • Man muss einen Unterschied machen zwischen einem Reset vom Software-Watchdog-Daemon und dem des Broadcom SoC's.
    Der Software-Watchdog-Daemon ist primär dafür dar regelmäßig in /dev/watchdog zu schreiben. Der SoC-Watchdog prüft davon unabhängig ausschließlich /dev/watchdog
    Läuft die Software noch nicht wenn man das Kernel-Module läd und anschließend "cat > /dev/watchdog" ausführt, resettet der SoC den PI sofern nicht erneut innerhalb 60 Sekunden in /dev/watchdog geschrieben wurde!

    Jetzt muss ich nochmals nachfragen.

    Ich habe den Watchdog aktiviert und er ist auch unter /dev zu sehen.

    Wenn ich jetzt "cat > /dev/watchdog" eingebe bekomme ich "Keine Berechtigung".
    Egal ob mit sudo oder ohne.

    Wenn ich die Bash zuvor als sudo starte und dann eine "cat > /dev/watchdog" mache, passiert nichts.
    Mache ich etwas falsch?

    Einmal editiert, zuletzt von Harry89 (23. April 2015 um 19:38)

  • Nabend,

    habe den Watchdog mal testweise eingerichtet und überprüfen lassen ob meine RaspiCam auch brav alle paar Sekunden ein Bild erstellt. Der Watchdog scheint aus unerklärlichen Gründen hin und wieder behaupten, dass keine Erneuerung des Bildes stattgefunden hat, obwohl es ein Neues gibt. Ist das normal, dass der so unzuverlässig läuft?

    Grüße M.

  • Hallo,

    so nach etwas probieren bin ich nun soweit.

    Wenn ich diese Reihenfolge beachte funktioniert es.

    Code
    sudo bash
    echo > /dev/watchdog

    Danach dauert es ca. 10 Sekunden und der Pi rebootet.

    Warum muss ich zuvor die shell als Sudo starten?
    Kann ich das nicht mit dem User Pi ebenfalls machen?
    Und warum dauert es nur 10 Sekunden?

    Vielen Dank für die Antworten.

  • Du startest nicht die sudo Shell sondern führst als root einen Befehl aus, in diesem Fall bash, was dazu führt das du dann zum Benutzer root wechselst also in einer bash Shell als root bist.

    sudo brauchst du deshalb weil ein normaler Benutzer nicht das Recht hat auf das Device zu schreiben. Es würde also auch schon reichen "sudo cat > /dev/watchdog" auszuführen.

    Und 10 Sekunden ist relativ. Wenn der Timer um 12:00:00 startet, du den Befehl aber erst um 12:00:50 absetzt dann dauerts eben nur 10 Sekunden bis 60 Sekunden voll sind :fies:

  • Auch mit "sudo cat > /dev/watchdog" erhalte ich ein "Zugriff verweigert"

    Die Zugriffsrechte sehen wie folgt aus.

    Code
    crw------- 1 root root 10, 130 Apr 25 14:59 /dev/watchdog
    Zitat


    Und 10 Sekunden ist relativ. Wenn der Timer um 12:00:00 startet, du den Befehl aber erst um 12:00:50 absetzt dann dauerts eben nur 10 Sekunden bis 60 Sekunden voll sind

    Ah verstehe, dachte immer der fängt bei jedem Schreibzugriff von neuem an zu zählen, danke.

    Einmal editiert, zuletzt von Harry89 (25. April 2015 um 15:30)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!