Provided by: manpages-de_2.5-1_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-Code, 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.

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

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

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

       -h, --help
              zeigt diese Hilfe 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  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.

RÜCKGABEWERT

       Der  Befehl  verwendet  generell  die  Rückgabewerte  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 Rückgabewert, oder 1 als Voreinstellung.

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

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
       ⟨https://www.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>,  Dr.  Tobias  Quathamer   <toddy@debian.org>   und   Helge
       Kreutzmann <debian@helgefjell.de> 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>.