Re: File-Locking in Shellscripten auf NFS

Autor: Alexander Holler <holler_at_ahsoftware.de>
Datum: Thu, 09 Dec 2010 10:23:03 +0100
Am 08.12.2010 21:19, schrieb Raphael Eiselstein:
> Hallo zusammen,
>
> für manche Anwendungsfälle möchte man z.B. vermeiden, dass ein Script
> mehrfach parallel ausgeführt wird, etwa per cron, wenn die Ausführung
> aus irgendwelchen Gründen länger dauert als die Periode in cron
> eingestellt ist.
>
> Der IMHO übliche weg ist ein PID-File zu schreiben, welches die
> Prozess-ID des laufenden Prozesses enthält. Wird das Script (oder

Nein. Die Datei mit der PID dient in der Regel nur dazu die PID des 
entsprechenden Prozess später einfach wiederzufinden. Die meisten Server 
bzw. Daemons die eine PID-Datei schreiben können haben nichts dagegen 
(z.B. mit unterschiedlichen Konfigurationen) mehrfach gestartet zu werden.

Will ein Programm explizit Mehrfachausführung verhindern nutzt man in 
der Regel IPC (inter-process communication), d.h. z.B. eine Semaphore. 
Netzwerkdaemons haben es da relativ einfach, die nutzen dazu einfach 
bind, was dann (auf die Nutzung des entsprechenden Ports bezogen) den 
gleichen Effekt hat.

> Kann man auf NFS eine Datei derart locken, dass der Lock entfernt wird,
> falls der "sperrende" Prozess abgestürzt ist?

Nein.

> Das einzige, was in diesem Setup als "hochverfügbar" angesehen werden
> kann ist der NFS-Server, alle NFS-Clients sind einfache Systeme die
> unabhängig voneinander funktionieren müssen, d.h. es darf kein anderes
> "zentrales System" geben.
>
> Gibt es eine *einfache* Lösung basierend auf NFS?

Ich würde das eigentliche Problem beseitigen. D.h. die offensichtlich 
zentrale Aufgabe (sonst wäre Mehrfachausführung ja wohl kein Problem), 
zentral erledigen lassen, oder die Problemstellung so angehen, daß 
Mehrfachausführung kein Problem ist.

Dazu Dateien zu nutzen ist, wie bereits festgestellt, mehr oder weniger 
ungeeignet, zumindest wenn das Locking des Dateisystems nicht zur 
Synchronisation missbraucht werden kann.

Mehr kann man aufgrund der dürftigen Problembeschreibung nicht sagen.

Gruß,

Alexander

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 09.12.2010

Dieses Archiv wurde generiert von hypermail 2.2.0 : 09.12.2010 CET