Raspi: Watchdog per Python-Skript triggern

OP (Firma: Q3) #4287981
Lesenswert?
• ▲
▼
Ich verwende einen Raspberry B+ als Treiber für eine LED-Matrixanzeige. 
Dazu läuft ein Python-Skript, was die darzustellenden Daten per UDP 
entgegennimmt und mittels der Adafruit-Lib und dem RGB-LED-HAT-Modul auf 
die Anzeige bring. Das funktioniert im Testbetrieb bisher gut.

Für den ernsthaften Einsatz hätte ich doch gerne den eingebauten 
Hardware-Watchdog des Raspi genutzt, allerdings ergeben sich da ein par 
Probleme oder es sind einfach nur Wissenslücken meinerseits.

In den Beschreibungen zur Einrichtung und Verwendung des Watchdog habe 
ich zwei Dinge verstanden: 1. muss die Hardware "eingeschaltet" werden 
und 2. wird ein Daemon installiert, der den Watchdog normalerweise 
periodisch davon abhält, einen Reset auszuführen. Hängt das System, 
kommen diese Impulse nicht und der Watchdog schlägt zu - soweit klar.

Nun habe ich aber eher Sorge, dass mein Python-Skript mal irgendwie 
hängenbleibt oder sich unvorhergesehen beendet, als das das gesamte 
System hängt.

Eine Idee wäre es, dieses "Wachhalten" des Watchdog vom ohnehin zyklisch 
laufenden Python-Skript zu leisten, statt den Daemon auf Systemebene zu 
installieren. Nur, ist dieser Fall überhaupt "vorgesehen"? Gibts einen 
passenden Befehl in Python dazu, oder funktioniert das wenigstens mit 
os.system(...)?

Allerdings ist das wahrscheinlich sowieso nicht sinnvoll, weil es dann 
nicht mehr möglich wäre, irgendwas an dem Python-Skript zu machen, weil 
ja sofort der Watchdog zuschlägt. Könnte man dessen Wirken vom 
eingelogten User abhängig machen? Fragen über Fragen ... Danke für Tips.
#4288176
Lesenswert?
• ▲
▼
Ich kenn' mich damit leider nicht aus, aber üblicherweise kommuniziert 
man mit dem Linux-Kernel (und damit mit der Hardware) entweder über die 
Linux-Kernel-API-Funktionen oder über die /dev-Schnittstelle der 
Treiber. Vielleicht hilft dir das hier in die richtige Richtung weiter: 
https://www.kernel.org/doc/Documentation/watchdog/watchdog-api.txt

Um unerwünschte Resets zu vermeiden nur weil dein Skript mal was macht 
würde ich halt mal abschätzen, wie lange das normalerweise so arbeitet, 
dann da einen Margin draufschlagen und dann den Timeout auf 2 Sekunden 
oder was auch immer konfigurieren.
#4288295
Lesenswert?
• ▲
▼
Frank E. schrieb:
> Nun habe ich aber eher Sorge, dass mein Python-Skript mal irgendwie
> hängenbleibt oder sich unvorhergesehen beendet, als das das gesamte
> System hängt.

Und du willst, daß das gesamte System einem harten Reset unterzogen wird 
und dann neu bootet, nur weil dein Skript hängt? Ich würde für das 
Skript eine eigene Überwachung machen, die rein in der Software läuft.

> Eine Idee wäre es, dieses "Wachhalten" des Watchdog vom ohnehin zyklisch
> laufenden Python-Skript zu leisten, statt den Daemon auf Systemebene zu
> installieren. Nur, ist dieser Fall überhaupt "vorgesehen"? Gibts einen
> passenden Befehl in Python dazu, oder funktioniert das wenigstens mit
> os.system(...)?

Schau dir einfach den Sourcecode des Daemons an.
Hier findet man auch ein bischen Info darüber:
http://www.gieseke-buch.de/raspberrypi/eingebauten-hardware-watchdog-zur-ueberwachung-nutzen
OP (Firma: Q3) #4288570
Lesenswert?
• ▲
▼
Rolf M. schrieb:
> Frank E. schrieb:
>> Nun habe ich aber eher Sorge, dass mein Python-Skript mal irgendwie
>> hängenbleibt oder sich unvorhergesehen beendet, als das das gesamte
>> System hängt.
>
> Und du willst, daß das gesamte System einem harten Reset unterzogen wird
> und dann neu bootet, nur weil dein Skript hängt? Ich würde für das
> Skript eine eigene Überwachung machen, die rein in der Software läuft.

Ja, das ist kein Problem, das Skript abzuarbeiten ist die einzige 
Aufgabe des Raspi - und das startet automatisch.
Ausserdem bin ich in Sachen Linux und Python rel. neu und habe leider 
nicht die Zeit noch 'n halbes Jahr zu lernen, um die optimale und 
stilistisch sauberste Variante zu ermitteln - kann man später immer noch 
ändern. Zur Zeit gilt: Hauptsache es geht (irgendwie) ...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.