Raspberry: Überwachtes Skript editieren?

OP (Firma: Q3) #4289001
Ich muss dafür sorgen, dass ein hängendes oder beendetes Python-Skript 
automatisch wieder gestartet wird. Dafür gibts die verschiedensten 
Techniken, da bin ich dabei mich an die verschiedenen Möglichkeiten 
heranzutasten.

ABER:

Was passiert, wenn ich ein solches Skript mal editieren muss? Das wird 
mir doch immer wieder unter den Fingern weg gestartet, oder? Oder kann 
man verhindern, dass ein Skript gestartet wird, so lange es z.B. per 
Nano geöffnet ist?
Gast
dein problem ist das du ein "installiertes" laufendes skript editieren 
willst.

editiere eine kopie davon und kopiere sie an die "produktive stelle" im 
dateisystem wenn du mit editieren fertig bist.
auf lange sicht wäre es auch gut wenn du dir versionierungssysteme wie 
git anschauen würdest.
Gast
Eigentlich stoppt man vorher den Prozess der sich um das Script kümmert 
und editiert es dann.

VI z.B. legt beim editieren eine Swap- Datei an. Es könnte überwacht 
werden ob diese Datei vorhanden ist.
Gast
Frank E. schrieb:
> Ich muss dafür sorgen, dass ein hängendes oder beendetes Python-Skript
> automatisch wieder gestartet wird. Dafür gibts die verschiedensten
> Techniken, da bin ich dabei mich an die verschiedenen Möglichkeiten
> heranzutasten.

das einfachste ist es über systemd zu starten. Dort kannst du einfach 
festlegen was passieren soll wenn es beendet wurden.

Editieren kann du es immer, musst dann nur wenn du fertig bist den 
deamon neu starten.
OP (Firma: Q3)
Das Problem hat sich übrigens dahingehend geklärt, dass es gar keines 
ist :-)

Man kann ein laufendes Python-Skript ohne Weiteres z.B. mit Nano 
editieren und speichern. Eine Änderung wird jedoch erst nach Anhalten 
und erneutem Start des Skriptes wirksam. Hängt wohl damit zusammen, dass 
garnicht das Skript direkt ausgeführt wird, sondern seine compilierte 
*.PYC-Version ...
c.m. schrieb:
> dein problem ist das du ein "installiertes" laufendes skript editieren
> willst.

Nein, das ist überhaupt kein Problem, zumindest auf unixoiden Systemen. 
Da darf man ein laufendes Skript editieren oder sogar das Executable zu 
einem laufenden Prozeß ersetzen (dito shared Libraries). Die jeweilige 
Änderung wird natürlich erst nach dem Neustart des entsprechenden 
Skripts/Programms wirksam.

Im Zusammenhang mit einem automatischen Restart (init, systemd oder ein 
"Angel" Prozeß - der Mechanismus ist egal) ist es dann am einfachsten, 
wenn man nach den Änderungen das laufende Programm einfach stoppt und 
vom Automatismus neustarten läßt.
Axel S. schrieb:
> c.m. schrieb:
>> dein problem ist das du ein "installiertes" laufendes skript editieren
>> willst.
>
> Nein, das ist überhaupt kein Problem, zumindest auf unixoiden Systemen.
> Da darf man ein laufendes Skript editieren oder sogar das Executable zu
> einem laufenden Prozeß ersetzen (dito shared Libraries). Die jeweilige
> Änderung wird natürlich erst nach dem Neustart des entsprechenden
> Skripts/Programms wirksam.

Das ist soweit richtig, es mag jedoch sehr unerwünscht sein, gerade 
jetzt die neue Version auszuführen, z.B. weil die alte gerade beendet 
wurde und daher die neue gestartet wird. Dennoch möchte man den 
aktuellen Stand vielleicht mal speichern. Da ist das Editieren einer 
Kopie (ggFs. unter Versionskontrolle) durchaus sinnvoll.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.