python script soll nicht mehrmals ausgeführt werden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

Bin mir nicht sicher, ob meine Anforderung auf Linux Ebene oder innerhalb eines Python Scripts behandelt werden sollte.

Auf einem Raspberry soll ein Python Script ausgeführt werden, das die GPIOs bearbeitet. Einmal gestartet läuft es ohne Unterbrechung bis durch User ein Abbruch erzwungen werden kann.

Um Fehlfunktionen zu vermeiden darf dieses Script nicht mehrmals gestartet werden. Also, sollte/kann innerhalb des Scripts direkt "vermieden" das eine zweite Instanz ausgeführt werden kann.
Oder ist es besser das auf Linux Ebene abzufangen?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Dafür gibt es viele Möglichkeiten z.B.:

Datei anlegen, beim sauberen Beenden wieder löschen. Existiert Datei, läuft der Prozess, ein weiteres Programm startet nicht. Problem: Stürzt Programm ab, bleibt die Datei und du musst dir für diesen Fall etwas überlegen.

Oder wieder die Datei und in die Datei die PID schreiben, dann kann das zweite Script prüfen, ob ein Programm mit dieser PID läuft.

Oder etwas extrem Einfaches, du öffnest einen Port, ein weiteres Programm kann nicht denselben Port öffnen, solange das erste Programm diesen Port hält.

Es gibt sicherlich noch mehr Lösungen, die mit Sicherheit hier im Forum bereits behandelt wurden. Ich habe allerdings auch keine Beiträge auf die Schnelle gefunden. Die Suchbegriffe dafür sind etwas schwierig zu wählen.
BlackJack

Wobei man so etwas nach Möglichkeit nicht selber machen sollte. Wenn man bei PID-Files zum Beispiel nicht aufpasst kann man Race-Conditions haben. Es gibt Module für so etwas, zum Beispiel `pid`.
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

BlackJack hat geschrieben:... Es gibt Module für so etwas, zum Beispiel `pid`.
Hört sich so an als wäre es die Lösung .. mal schauen.

Kannst du zu deiner Fußzeile mehr sagen .. gute Verweise?
CoffeeScript documentation about the existential operator
Python und CoffeeScript hört sich spannend an .. bei CoffeeScript denke ich eher an JavaScript
BlackJack

@gNeandr: Die Fusszeile ist einfach meine Signatur für diesen Monat. Die Signatur kann man in den persönlichen Einstellungen festlegen und die wird automatisch unter jeden Beitrag gesetzt. Ich setze da in der Regel irgendein Zitat das ich interessant oder lustig fand. Diesen Monat nicht von einer Person, sondern aus der CoffeeScript-Dokumentation.
Antworten