Frage:
Rpi friert ab und zu ein, wie man es mit einem Wachhund repariert?
Jurudocs
2019-06-14 12:43:34 UTC
view on stackexchange narkive permalink

Ich baue ein System mit einem Himbeer-Pi in einer sehr abgelegenen Gegend, die mit einem Internet-Stick mit dem Internet verbunden ist. Die Tests sind bisher vielversprechend, aber der Pi friert hier und da ein und ich kann mich nicht mehr mit dem Pi verbinden. Da ich nicht jedes Mal, wenn es einfriert, eine 2-stündige Fahrt machen möchte, möchte ich ein redundantes System erstellen, das das andere System überprüft.
Der schlimmste Fall ist, das eingefrorene System vom Stromnetz zum Neustart zu trennen. Dies sollte vom Arbeits-Pi durchgeführt werden.

Nun die Frage als absoluter Noob, wenn es um Gebäudeelektronik geht.

Ich habe den ATXRaspi R3 ausprobiert, bin mir aber nicht sicher, wie ich die 6-Sekunden-Presse "digital" abfeuern soll auf diesem Leistungsregler, um die Leistung durch den anderen Pi zu unterbrechen ...

Was wäre der einfachste Weg, um die Leistung durch einen anderen Pi zu unterbrechen? Hinweise sind sehr willkommen.

Ich bin mir nicht sicher, ob jemand diese Schaltung für Sie entwerfen wird. Aber noch etwas zu beachten: Was auch immer den ersten Pi zum Einfrieren bringt, kann einen gemeinsamen Fehlermodus für den zweiten Pi haben. Wenn es beispielsweise aufgrund einer Stromschwankung einfriert, erhalten Sie möglicherweise zwei eingefrorene Pis anstelle der gewünschten unabhängigen Redundanz. Es könnte sich lohnen zu verstehen, warum dieser erste Pi zuerst einfriert.
Wie schnell brauchen Sie den Pi, um wieder online zu gehen? Ein einfacher Feiertagslicht-Timer kann den Strom alle X Stunden aus- und wieder einschalten, solange es Ihnen nichts ausmacht, bis zum Rücksetzintervall zu warten, bis er wieder online ist.
@Jurudocs, Ich folgte # bertos Watchdog-Timer-Tutorial und fand alles gut. Ich verstehe nicht ganz, was der Watchdog tut, aber ich bin zu 90% sicher, dass die Watchdog-Timer-Methode Ihr Problem lösen sollte, viel sauberer als meine vorgeschlagene Hardwarelösung.
Fünf antworten:
berto
2019-06-15 08:09:28 UTC
view on stackexchange narkive permalink

Bevor Sie sich mit zusätzlicher Hardware befassen, lesen Sie bitte den sogenannten "Watchdog-Timer". Der Raspberry Pi verfügt über einen eingebauten Hardware-Watchdog, der ihn aus- und wieder einschaltet, wenn der Chip nicht innerhalb eines bestimmten Intervalls aktualisiert wird.

Ich habe den Watchdog auf einem Raspberry Pi 3 und einer neuen Version von Raspbian eingerichtet mit sehr wenig Konfiguration. Als erstes muss überprüft werden, ob der Hardware-Watchdog verfügbar ist (ich habe mein System überprüft und es sieht so aus, als ob die von mir installierte Version von Raspbian die Watchdog-Unterstützung direkt im Kernel kompiliert; es muss kein Kernelmodul geladen werden):

  pi @ unicornpi: ~ $ ls -al / dev / watchdog * crw ------- 1 root root 10, 130 Nov 3 2016 / dev / watchdogcrw ------- 1 root root 252, 0 Nov 3 2016 / dev / watchdog0  

Wenn Sie / dev / watchdog sehen, sind Sie fertig. Sie müssen lediglich die in Systemd integrierte Watchdog-Funktion konfigurieren.

Legen Sie in der Datei /etc/systemd/system.conf die folgenden Zeilen fest:

  pi @ unicornpi: ~ $ grep Watchdog /etc/systemd/system.confRuntimeWatchdogSec=10ShutdownWatchdogSec=10min 

In den obigen Zeilen heißt es:

  • Aktualisieren Sie den Hardware-Watchdog alle 10 Sekunden. Wenn die Aktualisierung aus irgendeinem Grund fehlschlägt (ich glaube nach 3 Intervallen, dh 30 Sekunden), schalten Sie das System

  • beim Herunterfahren aus und wieder ein. Wenn das System mehr als 10 Minuten zum Neustart benötigt, schalten Sie es aus Schalten Sie das System aus

Sobald Sie dies konfiguriert und neu gestartet haben, wird in den dmesg -Protokollen Folgendes angezeigt:

  pi @ orangepi: ~ $ dmesg | grep -i Watchdog [0.763148] bcm2835-wdt 3f100000.watchdog: Broadcom BCM2835 Watchdog-Timer [1.997557] systemd [1]: Hardware-Watchdog 'Broadcom BCM2835 Watchdog-Timer', Version 0 [2.000728] systemd [1]: Hardware-Watchdog auf 10 s einstellen  

Wenn Sie sehen, dass Hardware-Watchdog auf 10s setzt, sind Sie fertig.

Der beste Weg, um zu überprüfen, ob der Watchdog funktioniert, besteht darin, das System zu überlasten. Ich habe dies mit einer "Gabelbombe" gemacht, die das System mit Müllprozessgabeln vollständig sättigt. Wenn Sie dies ausführen, reagiert der Pi nicht mehr und der Watchdog sollte einschalten. Ihr System sollte nach etwa einer Minute wieder betriebsbereit sein:

 : () {: |: &};:  

Fügen Sie das in eine Shell ein und Ihr System wird heruntergefahren. Sie wurden gewarnt.

Weitere Informationen zum in Systemd integrierten Watchdog-System finden Sie auf der Website des Autors.

Vielen Dank für den Rat. Ich habe Watchdog schon lange gehört, es aber nie ausprobiert, da es bis jetzt nicht notwendig war, einen intelligenten Dachgarten außerhalb des Hauses zu errichten (tatsächlich 50 Fuß über dem Haus). Ein anderer Grund hat es nicht versucht, weil Tutorials nicht für Neulinge geeignet sind. Als ich vor Jahren mit Rpi1 angefangen habe, fand ich Terminalbefehle sehr beängstigend (ich habe mehr als drei Stunden gebraucht, um eine Zip-Datei (tatsächlich tar) herunterzuladen und zu extrahieren, aber ich wusste nicht, wo ich die extrahierten Dateien finden kann!) Jetzt finde ich Terminalbefehle nicht so beängstigend, aber manchmal sehr effizient, obwohl ich Win PowerShell-Terminalbefehle immer noch liebe, ...
Und der Rat zu Beginn Ihrer Antwort, zuerst zu lesen, was ein Wachhund ist, ist sehr gut. Ich wusste nicht, dass Watchdog eigentlich "Watchdog TIMER" ist. Dies ist wichtig, denn wenn ich vorher weiß, dass es sich um einen Timer handelt, kann ich die Dinge besser verstehen. Und wie immer habe ich mit Wiki angefangen, was für Neulinge immer eine gute Lektüre ist. Jetzt weiß ich, dass der Wachhund tatsächlich eine Art Hardware ist, die neben dem RPI sitzt. Selbst wenn Rpi Dinge durcheinander bringt, kann der Außenstehende zur Rettung kommen (oder "eintreten"?). Wenn ich das Wiki lese, weiß ich, dass "Kick-In" kein Slang ist, sondern ein Fachbegriff.
Ich wusste auch nicht, was ein "Daemon" ist. Als ich ein Kind war, las ich in der Bibel, dass Daemon ein Bösewicht ist, also sollten rechtschaffene Programmierer wie ich keine Daemons verwenden, sonst könnte ich zur Hölle werden. Aber dann sagt mir Wiki, wer die MIT / UNIX-Leute den Namen geprägt haben und warum "Daemon" nicht Dämon bedeutet. Es wird auch klargestellt, dass Dämonen gut sein können und sogar der Gerechte Sokrates einen Dämon besitzt. Wie auch immer, ich habe Wikis gelesen und bin jetzt bereit, mit deinen Tutorials zu beginnen :)
Also habe ich Ihr sehr detailliertes Watchdog-Tutorial befolgt und festgestellt, dass alles in Ordnung ist, bis der Watchdog auf 10 Sekunden eingestellt ist. Der nächste Schritt besteht darin, eine Gabelbombe zu probieren, vielleicht am späten Abend oder morgen.
Vielen Dank, dass Sie vorgeschlagen haben, es als "Watchdog-Timer" zu bezeichnen. Ich habe die Bearbeitung vorgenommen
Ich glaube, Sie beziehen sich auf „Dämonen“, die als schlecht / böse gelten. Andererseits ist „Dämon“ - mit einem „a“ - wohlwollend und stammt aus der griechischen Mythologie. Prozesse auf einem System, die im Hintergrund ausgeführt werden, werden als Dämonen bezeichnet, da sie wie Geister sind. Sie arbeiten ohne gesehen zu werden. https://en.wikipedia.org/wiki/Daemon_(classical_mythology)
Ja, "Watch Dog Timer" erzählt die Geschichte detaillierter. Aber die Idee "Wachhund" ist mir immer noch rätselhaft. Der folgende Artikel sagt mir mehr Details, aber ich finde die Idee, den Hund zu treten, immer noch rätselhaft. Ich habe noch nie davon gehört. Ich glaube, ich habe irgendwo einen Punkt verpasst. Ich denke, es ist wie eine Rekursion, die NUR einfach ist, nachdem Sie den "Trick" verstanden haben. https://www.microcontrollertips.com/whats-watch-dog-timer-wdt-faq/
Ich bin mir nicht sicher, woher der Begriff stammt, aber zu sagen, dass etwas "einsetzt", ist eine andere Art zu sagen, dass etwas ausgelöst wird oder dass ein Ereignis eintritt. Im Watchdog-Fall bedeutet dies, dass der Aus- und Einschalten wirksam wird, wenn der Timer nicht aktualisiert wurde, was darauf hindeutet, dass ein Problem vorliegt.
Vielen Dank für Ihre ausführliche Erklärung des Ausdrucks "Kicking In". Ich war einmal verwirrt, weil ich einen anderen Artikel gelesen habe, in dem der Ansatz erwähnt wurde, "den Hund weiter zu treten, sonst wird er dich zurückbeißen". Diese Annäherung an den Hund wird tatsächlich als Rpi-Watchog-Algorithmus verwendet. Wenn der Watchdog-Timer auf 10 Sekunden eingestellt ist, sollte Rpi den Timer möglicherweise alle 8 Sekunden neu starten (den Hund treten, bevor sein Timer abläuft). Eine weitere Verwirrung für Neulinge wie mich ist die folgende: / um fortzufahren, ...
Hallo @berto, Eine weitere Verwirrung ist die folgende. Rpi startet den Timer zwar alle 8 Sekunden neu, überwacht den Timer jedoch nicht, um festzustellen, ob die Zeit von 10 Sekunden abgelaufen ist. Es ist der Watchdog, der den Timer "überwacht", und wenn der 10-Sekunden-Timer abgelaufen ist, setzt die Watchdog-Hardware den RPI zurück. Mit anderen Worten, es ist nicht das Rpi, das einen Reset "auslöst", sondern die Hardware-Reset-Schaltung des Watchdogs "startet" (oder löst sich selbst aus, wenn Sie möchten), um das Rpi zurückzusetzen.
Hallo @berto, Ich habe gerade meinen Rpi3B + Stretch auf Rpi4B Buster aktualisiert. Ich habe Ihre sehr detaillierte Anweisung erneut befolgt, um den 10-Sekunden-Uhrentimer einzustellen und die Zeitbombe zu verwenden, um zu überprüfen, ob alles funktioniert. Mit anderen Worten, Ihre Anweisung ist sowohl für Rpi3 Stretch als auch für Rpi4 Buster gut. Nochmals vielen Dank für Ihre Hilfe.
Milliways
2019-06-14 13:21:10 UTC
view on stackexchange narkive permalink

Die Abschaltleistung ist eine Brute-Force-Methode und birgt Risiken.

Die herkömmliche Lösung für Sperrprobleme besteht in der Verwendung eines Watchdogs.

Es gibt einen BCM-Hardware-Watchdog. Wenn Sie den Hardware-Watchdog starten möchten, geben Sie dtparam = watchdog = on in /boot/config.txt

an und an sich tut dies wenig, obwohl es das System neu starten sollte, wenn nicht regelmäßig "getreten". Sie können Code schreiben, der / dev / watchdog öffnet, um ihn zu starten.

Es gibt auch einen Watchdog-Daemon, den Sie konfigurieren können, um den Watchdog zu aktivieren. Sie sollten in der Lage sein, mit sudo systemctl enable watchdog

PS zu beginnen (mit RUN gekennzeichnet) niedrig. Dies entspricht dem Aus- und Wiedereinschalten.

tlfong01
2019-06-14 13:27:10 UTC
view on stackexchange narkive permalink

Remote Rpi friert von Zeit zu Zeit ein. Wie wecke ich sie auf?

Antwort

Update 2019jul27hkt1406

Ich habe kürzlich mein Rpi3B + Stretch auf Rpi4B Buster aktualisiert und bin erneut dem Tutorial von @ berto gefolgt, um den Watch Dog Timer einzustellen. Ich fand, dass alles so reibungslos funktioniert wie zuvor. Mit anderen Worten, beim Upgrade auf Rpi4 müssen keine Änderungen am Tutorial von @ berto vorgenommen werden.

Das letzte Mal wusste ich nichts über den Watchdog-Timer. Ich habe also mehr als 3 Stunden gebraucht, um bei Google alles von innen nach außen zu verstehen (na ja, fast von innen nach außen). Dieses Mal weiß ich, was los ist und welche Linux-Tricks es gibt. Daher habe ich nur ein paar Minuten gebraucht, um das Tutorial von @ berto abzuschließen.

2019jun18 Updates

Nach weiteren Überlegungen kam ich zu dem Schluss, dass meine Antwort zu Ende geht. Mein Fazit ist, dass @ bertos Watchdog-Tutorial und Experimentvorschlag gut sind und seine Antwort die wahre Antwort auf die Frage des OP ist.

Ich habe sein vorgeschlagenes Experiment erfolgreich durchgeführt, die Ergebnisse durch das Forkbomb-Programm überprüft und nach mehr als 10-stündigem Googeln und Lesen die Idee des Watchdog-Timers endlich gründlich verstanden.

Früher dachte ich fälschlicherweise, ich müsse noch lernen, wie man den Timer auf 10 Sekunden oder mehr einstellt. Aber wie @berto sagt, müssen nur 10 Sekunden eingestellt werden. Ich habe auch gelesen, dass ich den Timer auf bis zu 16 Sekunden einstellen kann und der Standardwert für Linux Watchdog sogar eine Minute beträgt. Dies ist jedoch nicht kritisch.

Ich habe alle langatmigen Lesetexte in den Anhängen entfernt, um die Antwort zu verkürzen. Ich würde Neulingen empfehlen, nicht zu versuchen, alle Details von Watchdog zu verstehen, ganz zu schweigen von dem viel komplizierteren Daemon SystemD, da unser Leben kurz ist und diese Systemdinge für Laien zu kompliziert sind.

I. Ich möchte zwei Punkte hinzufügen, um meine Antwort zu beenden.

(1) Es gibt viele Gründe, warum ein RPI in ein paar Tagen (aber normalerweise nicht in Monaten) hängen bleibt. Oft ist es nicht die Schuld des Anwendungsprogramms, sondern weil die Treiber- oder Bibliotheksfunktionen zu viel Müll verursachen, z. Steckdosen erstellt, verwendet, aber nicht ordnungsgemäß entsorgt. Wenn es das Anwendungsprogramm selbst ist, das Müll macht, kann das Programm "Garbage Collection" durchführen und das Problem lösen. Es ist jedoch schwierig, Müllsockel zu entfernen, die nicht vom Anwendungsprogramm generiert werden. Daher ist hier ein Watchdog-Timer hilfreich.

(2) Andere Möglichkeiten, um zu viel Müll zu vermeiden, der Ressourcen verbraucht, sind hin und wieder ein Neustart durch Software oder Hardware. Ich denke, jeden Morgen neu zu starten und auch ein durch Software umschaltbares Netzteil zu verwenden, um das System zurückzusetzen, fügt eine weitere Schutzschicht hinzu. Und die Verwendung von nur einem RPI ist nicht sehr sicher. Wenn Sie zwei RPIs als Watchdog des jeweils anderen verwenden (z. B. URT für die Nachrichtenübermittlung), wird eine weitere Schutzschicht hinzugefügt. Eine andere Methode, die ich nicht untersucht habe, ist die Verwendung von ESP8266-WLAN-Buchsen. Ich hoffe ich kann das später versuchen.

Dies ist das Ende meiner Antwort. Prost.

2019jun17 Updates

Also habe ich die Gabelbombe ausprobiert. Das System wurde nach dem Ausführen des Programms in 15 Sekunden neu gestartet.

fork bomb test results

2019jun16 Updates

Ich fand, dass @ bertos Gabelbombenprogramm ein bisschen beängstigend für Neulinge ist. Also lerne ich Bash, um herauszufinden, was diese Gabelbombe tut. Im Grunde ist es nur eine Funktion mit dem Namen ":", die als eine Funktion definiert ist, die sich zweimal aufruft und sich so auf unbestimmte Zeit verzweigt, so schnell wie Kaninchen exponentiell wachsen, alle Ressourcen verbrauchen und Linux zum Absturz bringen.

fork bomb

Ich habe auch die folgende interessante Version von Forkbomb mit Unicode-Symbolen gefunden:

() {| &};

2019jun14 / 15 Updates

@thesnow schlägt einen sehr schönen mehrschichtigen Ansatz mit einem Smart Plug vor. Ich denke, der Smart Plug oder das Smart IoT-Zeug ist der richtige Weg. Ich bin jedoch ein nicht so kluger Neuling in Sachen kluges Zeug, obwohl ich gerne lernen möchte. Also werde ich mir einen Smart Plug kaufen, Nachforschungen anstellen und anschließend meine Antwort verbessern. Im Moment habe ich im folgenden Referenzabschnitt einige verwandte Lernressourcen hinzugefügt.

Ich fand den Vorschlag von @ berto, den Hardware-Watchdog-Timer von Rpi zu verwenden, ebenfalls sehr gut. Ich habe noch nie mit Watchdoog-Sachen gespielt. Also werde ich es jetzt versuchen. Die Anweisungen von @ berto sind sehr detailliert, aber für mich immer noch etwas schwierig, da ich die Bedeutung der Befehle "grep" und "dmseg" nicht sehr gut kenne. Also habe ich gegoogelt und in den folgenden Anhängen einige Lesnotizen gemacht. Dann folgte ich dem Vorschlag von @ berto und bemühte mich ein wenig, Teil 1 abzuschließen. Ich habe noch keinen Neustart durchgeführt, da ich eine Pause einlegen muss, um die Dinge zu verdauen. Wie auch immer, hier ist die Bildschirmaufnahme.

watchdog_test_2019jun1501

Ich habe neu gestartet und das folgende Dmesg erhalten:

watchdog 3

Ich denke, ich gehe zu schnell und muss jetzt eine Pause einlegen, um zuerst mehr Linux-Dinge wie systemd zu studieren, bevor ich zurückkomme, um den Test auf Watchdog fortzusetzen.

systemd architecture

/ um fortzufahren, ...

Die Antwort

Ich habe das gleiche Problem. Ich baue einen Dachgarten mit ein paar RPIs, von denen jeder mit verschiedenen drahtlosen Sensoren (BlueTooth, Wifi), Relais und Magneten verbunden ist. In der Nähe befinden sich zwei riesige Motoren, die große Wassertanks und Aufzüge steuern. Die Motoren erzeugen EMI und frieren von Zeit zu Zeit in der Nähe befindliche Elektronikgegenstände ein.

Mein Plan ist es, durch Software umschaltbare Netzteile (Power Supply Units) zum Ein- und Ausschalten eingefrorener Rpi-Geräte und anderer Geräte (Bluetooth-Geräte frieren am häufigsten ein. BlueTooth und andere kleine Geräte haben keinen Befehl zum Zurücksetzen der Software oder zum Zurücksetzen der Hardware) Pin, so ist das Ein- und Ausschalten der 5V Vcc schnell und schmutzig, aber immer noch sicher). Kurz gesagt, die Rpi beobachten sich regelmäßig gegenseitig und ihre Geräte und POR (Power On Reset) jeden eingeschlafenen Kerl.

Natürlich kann ich auch einen GPIO-Pin verwenden, um den Rpi-Hardware-On-Board-Reset-Pin auszulösen. Aber ich bin zu faul, um zusätzliche Verkabelungen vorzunehmen, und zu arm als Bastler, um mir professionelle / industrielle Non-Stop-Systemgeräte wie den Dual WatchDog-Timer von SwitchDoc Labs leisten zu können (siehe Referenz unten).

Ich modifiziere gewöhnliche Gleichstrom- DC-Netzteile (12 V bis 5 V), sodass alle Rpi- oder MCP23x17-GPIO-Pins den Spannungsregler-Chip LM2956 / LM2947 des Netzteils ein- und ausschalten können. (LM2941 kann für 1A-Stromschalter verwendet werden, LM2596 für 5V 3A-Netzteil. Der Ein / Aus-Pin ist auch mit einem Druckknopf verbunden, um manuelle Ein- / Ausschalttests durchzuführen.)

Eigentlich jeder meiner 7 Rpi3B + ist mit einem billigen DS3231-Echtzeituhrmodul verbunden, das über einen Hardware-Interrupt-Pin zum Zurücksetzen von Netzteil, Rpi oder anderen Geräten verfügt.

Wann immer möglich und praktisch, binde ich alle Reset-Pins der Geräte zusammen (entferne einige der Pull-Up-Widerstände, um den GPIO-Pin nicht zu überlasten).

Jetzt den externen DS3231 RTC weckt alle am Morgen und schaltet um Mitternacht das Licht aus, sodass alle ins Bett gehen.

software switchable PSU

software switch PSU

software switch

1. LM2596 / LM2941 Software-zurücksetzbare Netzteil- / Stromschalter - Rpi StkEx-Diskussion

Rpi-Hardware-Watchdog-Diskussion

SwitchDoc Labs Dual WatchDog Timer

ATXRaspi R3 - LowPowerLab US $ 14,95

Ein hackbarer ESP8266 in einem Smart Plug Möchten Sie mit ESP8266 spielen, ohne sich Sorgen machen zu müssen die Hardware? - Mat 2017aug06

Reverse Engineering 101 des Xiaomi IoT-Ökosystems HITCON Community 2018 - Dennis Giese

Xiaomi WiFi-Buchse + MiHome-App 21.307 Aufrufe

espHome [ESP8266 / ESP32]

AliExpress WiFi Smart Plug

Smart Device - Wikipedia

WiFi-Garagentoröffner mit ESP8266 - Ray Wang 2016, 13. Mai 56.335 Aufrufe

Anhänge

Anhang A - Hinweise zum Lesen des WatchDog-Timers

Watchdog-Timer - Wikipedia

Linux WatchDog-Manpage

Linux-Watchdog - Allgemeine Tests

Anhang B - Linux-Befehle grep und dmesg lesen Notizen

Anhang C - systemd-Referenzen

systemd System- und Service-Manager - FreeDeskTop

systemd - Wikipedia

Anhang D - Referenzen zu Gabel und Gabelbombe

Fork (Systemaufruf) Wikipedia

Anhang E - Bash Learning Notes

So eine tolle Antwort! Danke auch für die Bilder. Ich bin froh, dass Sie es nicht nur für diese Frage genommen haben :-D Ich denke, ich brauche das Netzteil LM25966S, um es wie gesagt mit dem GPIO zu verbinden. Ich werde versuchen!!! Gut, dass ich noch meinen alten Lötkolben habe ...
@Jurudocs Vielen Dank für Ihre schönen Worte. Ich habe meine alten Antworten für Ihre Frage ausgeschnitten, eingefügt und geändert, sodass ich nicht viel Zeit gebraucht habe. Ich bin ein Netzteil-Hobbyist und habe Netzteile mit LM2596-Chips und Induktionsspulen usw. selbst gebaut. Aber heutzutage ist alles SMD und zusammengebaute Module sind spottbillig, also war ich faul, Dinge zu "machen". Übrigens, um das LM2596-Netzteil durcheinander zu bringen, müssen Sie nicht mit Rpi GPIO testen. Sie können einfach von Hand testen! :) Viel Glück!
Mir ist aufgefallen, dass Sie das Lesen von Systemd erwähnt haben. Ich empfehle Ihnen auf jeden Fall, dies zu tun, da dies eine wichtige Komponente für die Funktionsweise moderner Linux-Systeme darstellt. Das vollständige Verständnis wird jedoch lange dauern und ist nicht erforderlich, um den Watchdog auszuprobieren. :) :)
@berto, Ich bin damit einverstanden, dass ich sehr lange brauchen kann, um das komplizierte SystemD zu verstehen. Wie Poettering sagt: "[systemd] ist nie fertig, nie fertig, sondern verfolgt den Fortschritt der Technologie". Ich erinnere mich an Oliver Heaviside und sagte: "Soll ich mich weigern zu essen, weil ich den Mechanismus der Verdauung nicht vollständig verstehe?" - https://en.wikiquote.org/wiki/Oliver_Heaviside Also werde ich systemd jetzt vergessen und zum Watchdog zurückkehren. Eigentlich muss ich zuerst Bash lernen, bevor ich das seltsame Bash-Skript von Fork Bomb verstehen kann.
Die Gabelbombenlinie ist ziemlich einfach, sobald Sie verstanden haben, was Sie sehen. Es ist eine Funktion namens ":", die sich selbst rekursiv aufruft und eine Kopie von sich selbst in den Hintergrund stellt, die sich auch rekursiv aufruft. Die Wikipedia-Seite, die Sie in Ihren Notizen haben, erklärt dies weiter.
Nun, mir war nicht bewusst, dass das Symbol ":" ein Funktionsname sein kann. Am Anfang dachte ich fälschlicherweise, dass die Funktion keinen Namen hat, also ein "Lambda". Ich denke, über 90% der Besucher in diesem Forum verstehen nicht, was die Idee der Rekursion ist, ganz zu schweigen von der hier verwendeten doppelten Rekursion. Rekursion in der Mathematik ist ein Algorithmus, der zu Ende gehen und das Problem lösen würde. In diesem Fall gibt es kein Ende. Es ist falsch und falsch, die Funktion rekursiv aufzurufen. Der Funktionsaufruf selbst ist keine Rekursion im vollen Sinne oder gemäß der strengen mathematischen Definition.
Ich habe Ihre ältere Antwort (vor 6 Jahren!) Hier gefunden: https://raspberrypi.stackexchange.com/questions/3732/watchdog-daemon-not-restarting-pi-after-fork-bomb Die Dinge sind komplizierter als ich dachte. Also werde ich mehr Zeit verbringen, bevor ich die Bombe entschärfe. :) :)
Ich habe alles in Ordnung überprüft. Also habe ich die Gabelbombe ausgeführt. Wie erwartet wurde das System in ca. 15 Sekunden neu gestartet. Zusammenfassend habe ich Ihre netten Tutorials befolgt und fand alles gut, obwohl ich nicht ganz verstehe, was los ist. Ich muss mehr Zeit aufwenden, um Ihre Befehle zu verstehen, bevor ich weiß, wie der Watchdog-Timer eingestellt wird.
Wildbill
2019-06-15 00:47:34 UTC
view on stackexchange narkive permalink

Ich habe einige Pis. Alle bis auf einen liefen einwandfrei. Das Sorgenkind stürzte regelmäßig ab und erholte sich nach einem Stromausfall nie mehr, ohne erneut aus- und wieder eingeschaltet zu werden. Ich ließ es jede Nacht über cron neu starten und das half etwas.

Was es jedoch reparierte, war, die SD-Karte und die Sensorhardware zu nehmen und sie in einen anderen Pi zu stecken. Es ist seitdem fehlerfrei gelaufen. Möglicherweise haben auch Sie ein Hardwareproblem.

Ich habe Ihren zweiten Absatz über das Hardwareproblem nicht verstanden. Meinten Sie, dass die SD-Karte und der Sensor alle Probleme verursacht haben und das Ersetzen das Problem gelöst hat?
Nein, der Pi selbst war das Problem. Ich hatte eine Ersatzkarte, also habe ich die SD-Karte und die Sensoren auf die Ersatzkarte übertragen und sie anstelle des Originals verwendet. Keine Probleme seitdem.
Aha. Daher ist es immer eine gute Idee, ein Ersatz-RPI für die Fehlerbehebung beim Austausch zu haben. Vielleicht sollte das OP dies auch berücksichtigen.
thesnow
2019-06-15 01:15:35 UTC
view on stackexchange narkive permalink

Wenn Sie über WLAN verfügen und nur aus- und wieder eingeschaltet werden müssen, können Sie auch einen Smart Plug verwenden. Amazon macht eine für ~ 25 US-Dollar. Sie können sie aus der Ferne ein- und ausschalten und auch Timer-Routinen einrichten, wenn dies vorzuziehen ist. Ich habe einige seit mehreren Monaten und sie sind ziemlich zuverlässig. Sie benötigen kein Echo oder ein anderes dediziertes Gerät. Ich benutze mein Smartphone. Amazon Smart Plug

Bearbeiten: Mir ist klar, dass dies keine Lösung für den ersten Teil der Frage darstellt, aber wenn ich die Aussicht auf eine 2-stündige Fahrt hätte, wenn etwas schief gehen würde falsch Ich würde einen mehrschichtigen Ansatz in Betracht ziehen.

, Ich freue mich sehr über Ihren Vorschlag eines mehrschichtigen Ansatzes mit einem intelligenten Stecker auf der obersten Ebene. Eigentlich habe ich einige Monate versucht, einen Smart Plug basierend auf dem ESP8266 WiFi Controller selbst zu bauen. Ich fand jedoch, dass der ESP8266 mit NodeMCU Lua eine sehr steile Lernkurve hat. Der Neuling, dh ich, brauchte über 100 Stunden, um eine LED zu blinken (im Vergleich zu weniger als einer Stunde beim Schreiben eines blinkenden Arduino- oder Rpi-Programms). Also gab ich leider auf und entschied mich jetzt für einen Cheat, indem ich einen ESP8266 XiaoMi Smart Plug kaufte und ihn modifizierte . Ich werde Ihren Vorschlag bald zu meiner Antwort hinzufügen. Vielen Dank nochmal! :) :)


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...