FLOCK(1)

BEZEICHNUNG
flock - Sperrungen in Shell-Skripten verwalten

ÜBERSICHT
flock [options] <file|directory> <command> [command args]
flock [options] <file|directory> -c <command>
flock [options] <file descriptor number>

BESCHREIBUNG

This utility manages flock(2) locks from within shell scripts or the command line.

The first and second forms wrap the lock around the executing a command, in a manner similar to su(1) or newgrp(1). It locks a specified file or directory, which is created (assuming appropriate permissions), if it does not already exist. By default, if the lock cannot be immediately acquired, flock waits until the lock is available.

The third form uses open file by file descriptor number. See examples how that can be used.

OPTIONEN

-s, --shared
    richtet eine gemeinsame Sperre ein, gelegentlich auch Lesesperre genannt.

-x, -e, --exclusive
    richtet eine exklusive Sperrung ein, gelegentlich auch Schreibsperre genannt. Dies ist die Voreinstellung.

-u, --unlock
    löst eine Sperrung. Dies ist normalerweise nicht erforderlich, da eine Sperrung automatisch gelöst wird, wenn die Datei geschlossen wird. Dennoch kann es in speziellen Fällen nötig sein, zum Beispiel wenn die eingeschlossene Befehlsgruppe einen Hintergrundprozess geforkt haben könnte, welcher die Sperrung nicht übernehmen soll.

-n, --nb, --nonblock
    Fail rather than wait if the lock cannot be immediately acquired. See the -E option for the exit code used.

-w, --wait, --timeout Sekunden
    Fail if the lock cannot be acquired within seconds. Decimal fractional values are allowed. See the -E option for the exit code used.

-o, --close
    Close the file descriptor on which the lock is held before executing command . This is useful if command spawns a child process which should not be holding the lock.

-E, --conflict-exit-code Zahl
    The exit code used when the -n option is in use, and the conflicting lock exists, or the -w option is in use, and the timeout is reached. The default value is 1.

-c, --command Befehl
    übergibt einen einzelnen Befehl ohne Argumente an die Shell mit -c.

-h, --help
    zeigt eine Hilfe an und beendet das Programm.

-V, --version
    zeigt Versionsinformationen an und beendet das Programm.

BEISPIELE

shell1> flock /tmp -c cat
shell2> flock -w .007 /tmp -c echo; /bin/echo $?
    richtet eine exklusive Sperrung des Verzeichnisses /tmp ein, woraufhin der zweite Befehl scheitert.

shell1> flock -s /tmp -c cat
shell2> flock -s -w .007 /tmp -c echo; /bin/echo $?
    richtet eine gemeinsame Sperre des Verzeichnisses /tmp ein, woraufhin der zweite Befehl scheitert. Beachten Sie, dass die Einrichtung einer exklusiven Sperre mit dem zweiten Befehl scheitern wird.

shell> flock -x lokale-Sperrdatei echo 'a b c'
    holt die exklusive »lokale-Sperrdatei«, bevor »echo« mit »a b c« ausgeführt wird.

(
flock -n 9 || exit 1
# … unter der Sperrung ausgeführte Befehle …
) 9>/var/lock/mylockfile
    Die Form ist praktisch in Shell-Skripten. Der Modus zum Öffnen der Datei spielt für flock keine Rolle. Die Verwendung von > oder >> ermöglicht das Anlegen der Sperrdatei, falls sie noch nicht existiert, wofür allerdings Schreibrechte erforderlich sind. Mit < wird vorausgesetzt, dass die Datei bereits existiert und nur Lesezugriffsrechte nötig sind.

[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || :
    Dies ist ein nützlicher Baustein-Code für Shell-Skripte. Setzen Sie es an den Anfang des zu sperrenden Skripts und es wird sich bei der ersten Ausführung automatisch sperren. Wenn die Umgebungsvariable $FLOCKER für das auszuführende Shell-Skript nicht gesetzt ist, dann führen Sie flock aus und richten eine exklusive nicht-blockierende Sperre ein (mit dem Skript selbst als Sperrdatei), bevor sie es mit den richtigen Argumenten selbst erneut ausführen. Es setzt auch die Umgebungsvariable FLOCKER auf den richtigen Wert, so dass es nicht erneut läuft.

RÜCKGABEWERT
The command uses sysexits.h return values for everything, except when using either of the options -n or -w which report a failure to acquire the lock with a return value given by the -E option, or 1 by default.

AUTOR
H. Peter Anvin (hpa@zytor.com)

COPYRIGHT
Copyright © 2003-2006 H. Peter Anvin.
Dies ist freie Software, in den Quellen finden Sie die Bedingungen zur Weitergabe. Es gibt keine Garantie, auch nicht für die MARKTREIFE oder die TAUGLICHKEIT FÜR EINEN BESTIMMTEN ZWECK.

SIEHE AUCH
flock(2)

VERFÜGBARKEIT
Der Befehl flock ist Teil des Pakets util-linux, welches aus dem Linux Kernel-Archiv (ftp://ftp.kernel.org/pub/linux/utils/util-linux/). heruntergeladen werden kann.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.