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.
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.
:
Bearbeitet durch User
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
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) ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.