Provided by: manpages-de_4.15.0-9_all bug

BEZEICHNUNG

       flock - Sperrungen in Shell-Skripten verwalten

ÜBERSICHT

       flock [Optionen] Datei|Verzeichnis Befehl [Argumente]

       flock [Optionen] Datei|Verzeichnis -c Befehl

       flock [Optionen] Nummer

BESCHREIBUNG

       Das Dienstprogramm flock(2) verwaltet Sperrungen über Shell-Skripte oder die Befehlszeile.

       Die erste und die zweite der oben genannten Formen führen die Sperrung im Rahmen der
       Ausführung eines Befehls aus, ähnlich wie su(1) oder newgrp(1) dies tun. Sie sperren eine
       angegebene Datei oder ein Verzeichnis, welche angelegt werden (ausreichende Berechtigungen
       vorausgesetzt), wenn sie noch nicht existieren. In der Voreinstellung wartet flock, bis
       die Sperrung verfügbar wird, wenn diese nicht unmittelbar erreicht werden kann.

       Die dritte Form verwendet eine offene Datei anhand der Dateideskriptors-Nummer. In den
       unten stehenden Beispielen sehen Sie, wie Sie dies verwenden können.

OPTIONEN

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

       -E, --conflict-exit-code Zahl
           ist der Exit-Status, wenn die Option -n verwendet wird und die kollidierende Sperrung
           besteht, oder wenn die Option -w verwendet und die Zeit überschritten wird. Der
           Vorgabewert ist 1. Die Zahl muss im Bereich von 0 bis 255 liegen (einschließlich
           dieser Werte).

       -F, --no-fork
           forkt nicht vor der Ausführung von Befehl. Bei der Ausführung wird der Flock-Prozess
           durch Befehl ersetzt, der dann die Sperre hält. Diese Option ist zu --close
           inkompatibel, da andernfalls nichts zum Halten der Sperre übrigbleiben würde.

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

       -n, --nb, --nonblock
           schlägt fehl, anstatt zu warten, wenn eine Sperre nicht unmittelbar eingerichtet
           werden kann. Siehe die Option -E für den verwendeten Exit-Status.

       -o, --close
           schließt den Dateideskriptor, für den die Sperrung besteht, bevor der Befehl
           ausgeführt wird. Dies ist sinnvoll, wenn der Befehl einen Kindprozess erzeugt, der
           nicht ebenfalls die Sperrung erhalten soll.

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

       -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.

       -w, --wait, --timeout Sekunden
           verursacht einen Fehlschlag, wenn die Sperrung nicht innerhalb der angegebenen Anzahl
           Sekunden eingerichtet werden kann. Dezimale Nachkommastellen sind zulässig. Siehe die
           Option -E für den verwendeten Exit-Status. Wenn für Sekunden Null angegeben ist, wird
           dies als --nonblock interpretiert.

       --verbose
           meldet, wie lange es bis zur tatsächlichen Sperrung dauerte oder warum die Sperrung
           nicht erreicht werden konnte.

       -h, --help
           zeigt einen Hilfetext an und beendet das Programm.

       -V, --version
           zeigt die Versionsnummer an und beendet das Programm.

EXIT-STATUS

       Der Befehl verwendet generell die Exit-Status-Werte aus <sysexits.h>, außer wenn Sie die
       Optionen -n oder -w verwenden, welche beim Einrichten der Sperre einen Fehler melden, mit
       einem durch die Option -E festgelegten Exit-Status, oder 1 als Voreinstellung. Der durch
       -E angegebene Exit-Status muss im Bereich von 0 bis 255 liegen (einschließlich dieser
       Werte).

       Wenn Sie die Befehl-Variante verwenden und die Ausführung des Kindprozesses funktioniert,
       dann ist der Exit-Status jener des Kindprozess-Befehls.

ANMERKUNGEN

       flock erkennt keine Deadlocks. Siehe flock(2) für Details.

       Einige Dateisysteme (zum Beispiel NFS und CIFS) haben flock(2) nur unzureichend
       implementiert und flock kann immer fehlschlagen. Für Details, siehe flock(2), nfs(5) und
       mount.cifs(8). Abhängig von den Einhängeoptionen kann flock dort immer fehlschlagen.

BEISPIELE

       Beachten Sie, dass »shell> « in Beispielen eine Eingabeaufforderung darstellt.

       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 nicht 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.

       shell> exec 4<>/var/lock/meine_Sperrdatei; shell> flock -n 4
           Diese Form ist für die Sperrung einer Datei praktisch, ohne einen Unterprozess zu
           starten. Die Shell öffnet die Sperrdatei zum Lesen und Schreiben als Dateideskriptor
           4; dann wird flock zum Sperren des Deskriptors verwendet.

AUTOREN

       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)

FEHLER MELDEN

       Verwenden Sie zum Melden von Fehlern das Fehlererfassungssystem auf
       https://github.com/util-linux/util-linux/issues.

VERFÜGBARKEIT

       Der Befehl flock ist Teil des Pakets util-linux, welches heruntergeladen werden kann von:
       Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Dr. Tobias Quathamer
       <toddy@debian.org>, Helge Kreutzmann <debian@helgefjell.de> und Mario Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License
       Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.