Forum: Mikrocontroller und Digitale Elektronik Raspberry: Überwachtes Skript editieren?


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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?

von c.m. (Gast)


Lesenswert?

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.

von Luddl (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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 ...

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Malte S. (maltest)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.