Cronjob oder Skript mit Schleife?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
k2
Beiträge: 132
Registriert: 14.08.2002 22:29:28
Lizenz eigener Beiträge: MIT Lizenz

Cronjob oder Skript mit Schleife?

Beitrag von k2 » 20.06.2021 15:37:38

Hallo Zusammen,

ich bin gerade beim Zusammenbau eines kleinen Überwachungsservers auf Raspi-Basis. Ein Pin soll überwacht werden und beim Anlegen eines Signals ein Programm gestartet werden. Es stellt sich mir dabei die Frage -

Was ist die bessere Vorgehensweise bei einem Abfrageintervall zwischen 0,5 - 5 Sekunden:
1.) einen Cron-Job anlegen, der in der gewünschten Frequenz ein Abfrage-Skript startet, oder
2.) über systemd ein Skript starten, das in einer Endlosschleife mit der gewünschten Frequenz die Abfrage durchführt ?
Anm: der Raspi hat ansonsten keine weiteren Aufgaben, außer bei positiver Abfrage das Programm noch auszuführen.

Mein erster Gedanke war der Cron-Job, denn Cron ist ja eigentlich für sich wiederholende Aufgaben da, aber ob das auch für einen Job gilt, der jede Sekunde stattfindet?

Viele Grüße und Danke für Eure Meinung

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Cronjob oder Skript mit Schleife?

Beitrag von MSfree » 20.06.2021 15:59:32

Eigentlich ist beides Mist.

Die bessere Methode ist, einen eigenen Service zu schreiben, der ständig läuft und auf die Pin-Interrupts reagiert. Damit entfällt das Polling der Pins, das ohnehin fehlerhaft ist, weil du Ereignisse zwischen zwei Abfrageintervallen nciht mitbekommst.Ausserdem ist es extrem weniger CPU-belastend.

k2
Beiträge: 132
Registriert: 14.08.2002 22:29:28
Lizenz eigener Beiträge: MIT Lizenz

Re: Cronjob oder Skript mit Schleife?

Beitrag von k2 » 21.06.2021 14:56:19

Ja, da bin ich ganz bei Dir, eine Dauerschleife nur zum Abfragen eines Signals ist natürlich Mist...

Es scheint allerdings so, dass eine vernünftige Callback-Funktion nur für Python mit der RPi.GPIO-Bibliothek zur Verfügung steht. Da ist wohl nix mit BASH als Startskript. Dann müsste die gesamte Logik unter Python im alarm.service-Skript stehen, oder?

Die Signallänge ist übrigens unkritisch, es ist ein Warnsignal. Wenn es ansteht, dann für mehrere Sekunden/Minuten - wenn es abfällt, dann für Tage/Wochen/Monate.

Vielen Dank!

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Cronjob oder Skript mit Schleife?

Beitrag von MSfree » 21.06.2021 15:03:54

k2 hat geschrieben: ↑ zum Beitrag ↑
21.06.2021 14:56:19
Es scheint allerdings so, dass eine vernünftige Callback-Funktion nur für Python mit der RPi.GPIO-Bibliothek zur Verfügung steht.
Kennst du WiringPi? Das ist eine C-Bibliothek.

Viel habe ich damit bisher zwar auch nicht gemacht, aber einen Pin abfragen sollte damit eigentlich jeder hinbekommen, zumal es dafür genug Beispiele im Internet gibt.

k2
Beiträge: 132
Registriert: 14.08.2002 22:29:28
Lizenz eigener Beiträge: MIT Lizenz

Re: Cronjob oder Skript mit Schleife?

Beitrag von k2 » 21.06.2021 15:45:29

k2 hat geschrieben: ↑ zum Beitrag ↑
21.06.2021 14:56:19
Dann müsste die gesamte Logik unter Python im alarm.service-Skript stehen, oder?
Na, das war mal wieder Bullshit, das .service-Skript ist ja das Unit-Skript, das das Skript/Programm aufruft...
Shame on me! :facepalm:

k2
Beiträge: 132
Registriert: 14.08.2002 22:29:28
Lizenz eigener Beiträge: MIT Lizenz

Re: Cronjob oder Skript mit Schleife?

Beitrag von k2 » 22.06.2021 10:46:07

MSfree hat geschrieben: ↑ zum Beitrag ↑
21.06.2021 15:03:54
Kennst du WiringPi? Das ist eine C-Bibliothek.
Ja, kenne ich, ist aber deprecated, der Autor ist echt sauer: http://wiringpi.com/wiringpi-deprecated/
Eine andere Möglichkeit die Flankenwechsel-Interrupts auszuwerten habe ich nicht gefunden. Dann wird es wohl eine State Machine in Python werden, die für einen Zustandswechsel einen Flankenwechsel abwartet.
Muss ich mich eben in Python einarbeiten, bis jetzt habe ich nur mit Arduino und dessen C++ gearbeitet.

Antworten