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?
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.