[Eisfair_dev] wsusoffline v0.1.1 testing fuer E1

Marcus Roeckrath marcus.roeckrath at gmx.de
Fr Okt 25 20:43:48 CEST 2013


Hallo Marcus,

Nicky Cybala wrote:

> Nunja, ich bin auch nicht davon ausgegangen, das jemand das Script
> mehrfach gleichzeitig ausfuehrt. Das macht eigentlich auch keinen Sinn.

Du hast keinen Einfluss darauf, was da jemand einstellt. Und mir war es
zunächst auch nicht klar, weil nicht dokumentiert.

Und wenn man es weiss, wieviel Zeit muss zwischen den einzelnen cron-Jobs
liegen, damit sie sich nicht überschneiden.

> Mein Gedanke war urspruenglich der, das man verschiedene Updates zu
> verschiedenen Zeiten (Tagen) ausfuehren kann.

Kann aber nicht muss.

> Fuer XP z.B. gibt es so viele Updates nicht mehr, daher kann man hier
> z.B. alle 4-6 Wochen mal pruefen lassen. Bei W7/8 sieht es halt etwas
> anders aus. Hier kann man schonmal alle 2 Wochen nach den offiziellen
> Patch-Days auf Updates pruefen lassen.

Aber es könnte jemand z. B. Win7 und Win8 in verschiedenen Varianten
gebrauchen.

>> Nach Durchsicht des Downloadscripts bin ich mir dessen sogar ziemlich
>> sicher.
> 
> Das wuerde also bedeuten, ich muss hier noch irgendwas einbauen, was
> prueft ob das Script schon ausgefuehrt wird oder in der Doku darauf
> hinweisen das die Cronjobs nicht zeitgleich laufen duerfen.

Der Hinweis reicht nicht, Du musst sicherstellen, dass es nie zu mehreren
gleichzeitig laufenden Instanzen kommen kann.

Also z. B. in den cron nicht direkt den Aufruf des Downloadscripts, sondern
ein eigenes Startscript, dass zunächst überprüft, ob es schonläuft.

Wie?

Entweder prüfen, ob der Wrapper (Startscript) schon läuft, oder das
Startscript setzt eine Semaphore, auf die geprüft wird; nach Abschluss des
Jobs wird die Semaphore gelöscht.

Kann ein Download-cron-Job nicht gestartet werden, sollte der User darüber
informiert werden.

Da cron-Jobs sowieso Mails schreiben, sollte ein echo im Startscript
reichen.

Kritisch könnte es immer noch werden.

Wenn mehrere Jobs in der selben Sekunde starten, könnten beide noch keine
Semaphore finden und dann loslegen; ist alles ziemlich zeitkritisch.

Prüft man, ob der Wrapper schon läuft, wird eventuellkeiner Starten, da er
den jeweils anderen in der Prozessliste findet.

Ich würde wohl der Einfachheithalber mit einem einzigen crontab Eintrag
arbeiten, der die einzelnen Downloadjobs der Reihe nach abarbeitet.

Vielleicht hat aber nochjemand eine ganz andere Idee, wie man das handhaben
kann.

> Danke fuer deine Test, soweit hab ich wie gesagt garnicht gedacht und
> getestet.

Ist mir ja auch mehr oder weniger per Zufall aufgefallen, weil ich zur
selben Zeit zwei Jobs hatte und der eine ganz merkwürdige Ergebnisse hatte.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair_dev