Hallo Marcus,
Marcus Röckrath schrieb:
> Nelson Matias wrote:
>
>> Wenn ich jetzt den Server neu starte (wie zum
>> Kernelwechsel) dann wird das Script abgebrochen.
>
> Dein Skript wird wohl nicht selbst auf die "Stop"-Anforderung beim
> Systemreboot reagieren, sondern hart abgebrochen - je nachdem, was ein
> Skript/Programm tun soll, kann das ja dann auch negative Effekte haben.
>
> Ein Dienst, der so viele Stunden zu ackern hat, wäre mir als Dauerlösung
> sowieso suspekt und würde mal schauen, wie man das zeitlich optimieren
> kann.
Das Problem ist, das nicht alle Prozesse immer sauber angeschlossen
werden. Wenn mal eine Verbindung abbricht oder jemand vergisst sein
Projekt zu schließen bleiben Dateileichen stehen. Diese möchte ich auf
diese weise loswerden. Und weil ich das nicht händisch machen will läuft
das Script eben durch und muss dann alle denkbaren Fälle checken um
beurteilen zu können ob das weg kann oder nicht. Deshalb ist die
Kontrolle für jedes Verzeichnis bis zu 60 Sekunden.
Ein harter Abbruch ist kein Problem. Werden die Dateileichen beim
nächsten mal beseitigt. Entweder durch mein Script oder durch richtiges
Öffnen des Projekts mit anschließendem Schließen.
> Wenn du das nun auf zwei Durchläufe <500 >500 aufteilst, muss man natürlich
> aufpassen, ob die notfalls auch parallel laufen können/dürfen, ohne sich
> gegenseitig in die Quere zu kommen.
Ich lasse beide Durchläufe normal nicht parallel laufen. Aber auch der
parallele Lauf beider Hälften ist kein Problem. Es wird ja nichts
bearbeitet sondern nur Daten abgefragt und wenn die Kriterien nicht
erfüllt sind die temporären Dateien gelöscht. Selbst wenn das Script im
Hintergrund läuft und ich das Script ein zweites mal starten sollte,
kann es theoretisch dazu kommen, dass das gleiche Verzeichnis von beiden
zeitgleich bearbeitet wird. Dann löscht das schnellere die Dateien und
beim anderen gibt es eine Fehlermeldung, das die Dateien nicht gelöscht
werden können weil nicht vorhanden. Wenn nichts gelöscht werden muss,
dann werden auch beide Scripte zum gleichen Ergebnis kommen und
weitermachen.
>> Beim Neustart aber nicht wieder gestartet.
>
> Hat der fcron das gemacht?
Nein. Da war mir dieses Problem aber auch noch nicht bewusst geworden.
>> Ich habe mir überlegt, dass ich meinen Fortschritt auf /tmp speichern
>> kann. Im Falle eines Neustarts könnte ich dann das Script neu starten
>> und auf /tmp nachschauen wie weit die Aktion gekommen ist und an der
>> Stelle weiter machen.
>
> Denkbare Idee.
Ich habe das jetzt auch mal eingebaut in die Scripte. Das eigentliche
Script schreibt seinen Fortschritt nach /tmp/fortschritt.1 (oder das
andere in *.2). Das starter-Script überprüft ob es die entsprechende
Datei in /tmp findet und liest gegebenenfalls die zu übergebenden
Parameter daraus aus.
>> Jetzt meine Frage dazu: Muss ich noch ein paar *.timer/*.service Dateien
>> machen oder kann ich auch eine OnBootSec=15m in die bestehende
>> cleaner.timer ergänzen? Dann würde ich die Fortschrittsverwaltung ins
>> Script einbauen.
>
> Ich sehe nicht, wie man OnBootSec dazu benutzen kann, einen beim einem
> früheren Boot abgebrochenen Job damit "zur Fortstzung zu bringen".
Nach dem Studium der man-pages für timer-units können mehrere Zeitpunkte
im [Timer]-Abschnitt genannt werden. Somit habe ich jetzt auch
OnBootSec=15m drin und im starter-Script ja oben berichtete Abfrage.
Ergänzt habe ich jetzt auch, dass bei nicht vorhandener
Fortschritts-Datei die uptime mehr als 1h sein soll um dann das
Arbeitsscript normal zu starten. Ich kann ja keine unterschiedlichen
ExecStart-Zeilen für die unterschiedlichen Events verwenden, oder?
--
Gruß
Nelson