Python und rc.local

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
murphy1
User
Beiträge: 3
Registriert: Sonntag 4. März 2018, 18:14

Hallo python-forum.de-Gemeinde!

Ich hab vor ca. einem halben Jahr angefangen mich mit Python und dem Raspberry zu beschäftigen.
Ich hatte zuvor minimale Programmierkenntnisse jedoch nie etwas mit Python zu tun. Meine bescheidenen Python-Kenntnisse stammen von Google und learning by doing.
Nun hänge ich seit geraumer Zeit an einem Problem zu dem mir Google keine Lösung bieten kann (oder ich nach den falschen Begriffen suche) und habe mich deshalb hier angemeldet in der Hoffnung dass ihr mir helfen könnt.

Ich starte ein "unendliches" Skript beim Systemstart, eingetragen in rc.local, automatisch, das ganze funktioniert auch einige Zeit, doch nach ca. einem Tag Laufzeit beendet sich das Skript aus mir unerklärlichen Gründen. Wenn ich das selbe Script, nicht in rc.local eingetragen, von "Hand" in Thonny Python IDE öffne und starte, habe ich dieses Problem, dass es sich aus irgendeinem Grund beendet, NICHT!

Da ich dieses Verhalten bei unterschiedlichen Scripten festgestellt habe denke ich nicht dass es am Script selbst liegt, wenn jedoch nötig werde ich den Code hier gerne posten.

Das Betriebssystem ist Raspian Jessie, läuft auf einem Raspberry Pi 2 B.

Ich hoffe dass mir jemand mit meinem Problem helfen kann.

Murphy
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Kann man so pauschal nichts zu sagen. Einen technischen Grund sehe ich erstmal nicht, aber um dem auf die Spur zu kommen musst du in logging und Fehlerbehandlung investieren.

Und wenn du statt der eher frickeligen rc.local-weise eine vernuenftige Systemd-Unit schreibst, dann kann das Programm auch bei Absturz neu gestartet werden.

Last but not least: verwendest du RPI.GPIO? Wenn ja: wegwerfen, und mindestens gpiozero, wenn nicht gar pigpio verwenden. Mit RPI.GPIO hatte ich schon viele komische Probleme.
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

@murphy1: Wenn man eine systemd-Unit hat, dann werden Ausgaben (und eventuelle Fehlermeldungen/Tracebacks) im systemd-Journal aufgefangen und lassen sich mit `journalctl` ansehen. Falls es für mit `rc.local` gestartete Programme kein Logging-System gibt, müsste man sich da was selber basteln bzw. die Ausgabe des Programms in eine Datei umleiten. An dem Punkt wird es dann einfacher, einfach eine systemd-Unit zu schreiben.
murphy1
User
Beiträge: 3
Registriert: Sonntag 4. März 2018, 18:14

Danke für die schnellen Antworten:

@ __deets__
Ich habe zwei "unendliche" Scripte laufen, eines das den Zustand eines GPIO in eine CSV-Datei schreibt, und eines, das diese Datei mit der NAS synchronisiert. Tatsächlich ist das betroffene Script das, welches den Zustand des GPIO mittels RPi.GPIO in die CSV-Datei schreibt. Das Script das die CSV-Datei mit der NAS synchronisiert, ist eigentlich nie betroffen.
Somit bestätigt sich deine Vermutung und ich werde mich mit PIGPIO in den nächsten Abenden vertraut machen.

@narpfel
Sollte das Problem damit nicht gelöst sein werde ich mich in deinen Lösungsansatz einlesen.

Ich hoffe dass ich mich mit PIGPIO recht schnell vertraut mache, und eventuell bis zum Wochenende einen Test durchführen konnte um euch vom Ergebnis zu berichten.

Murphy
murphy1
User
Beiträge: 3
Registriert: Sonntag 4. März 2018, 18:14

Hallo __deets__!
Dein Tipp RPi.GPIO mit pigpio zu ersetzen hat wohl geholfen, das Script läut nun seit Mittwoch, gestartet mit rc.local, durch ohne Fehler.

Die Anfrage mit der PN war ein "Bedienungsfehler" meinerseits.

Danke für die Hilfe.

MfG Murphy
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Schön das es klappt!
Antworten