Provided by: util-linux-locales_2.41.2-4ubuntu1_all bug

NAZWA

       flock - zarządza blokadami ze skryptów powłoki

SKŁADNIA

       flock [opcje] plik|katalog polecenie [argumenty]

       flock [opcje] plik|katalog -c polecenie

       flock [opcje] numer

OPIS

       Program zarządza blokami flock(2) z poziomu skryptów powłoki lub z wiersza poleceń.

       Pierwsza i druga z powyższych postaci wywołania wiąże blokadę z wykonaniem polecenia, w podobny sposób do
       su(1) lub newgrp(1). Blokowany jest podany plik lub katalog, który jest tworzony (przy odpowiednich
       uprawnieniach), jeśli jeszcze nie istniał. Domyślnie, jeśli blokada nie może być od razu pozyskana, flock
       poczeka, aż stanie się dostępna.

       Trzecia postać używa otwartego pliku określonego numerem deskryptora pliku. Przykłady podane poniżej
       wskazują na potencjalne zastosowania.

OPCJE

       -c, --command polecenie
           Przekazuje powłoce pojedyncze polecenie, bez argumentów, używając opcji -c.

       -E, --conflict-exit-code liczba
           Status zakończenia, używany gdy stosowana jest opcja -n i istnieje sprzeczna blokada, albo gdy
           stosowana jest opcja -w i osiągnie się czas przeterminowania. Domyślną wartością jest 1. Liczba musi
           być z zakresu od 0 do 255.

       -F, --no-fork
           Nie rozgałęzia się przed wykonaniem polecenia. Przy wykonaniu, proces flock jest zastępowany
           poleceniem, które kontynuuje utrzymywanie blokady. Opcja ta jest niekompatybilna z --close, ponieważ
           wówczas nie istniałoby nic, co mogłoby utrzymywać blokadę.

       -e, -x, --exclusive
           Uzyskuje blokadę na wyłączność, czasem określaną jako blokadę zapisu. Tak jest domyślnie.

       -n, --nb, --nonblock
           Zawodzi zamiast czekać, gdy nie można od razu uzyskać blokady. Zob. opcję -E, aby poznać używany
           status zakończenia.

       -o, --close
           Zamyka deskryptor pliku na którym utrzymywana jest blokada, przed wykonaniem polecenia. Jest to
           przydatne, gdy polecenie tworzy proces potomny, który nie powinien utrzymywać blokady.

       -s, --shared
           Uzyskuje blokadę współdzieloną, czasem określaną jako blokadę odczytu.

       -u, --unlock
           Porzuca blokadę. Nie jest to zwykle wymagane, ponieważ blokada jest automatycznie porzucana przy
           zamykaniu pliku. Opcja może być wymagana w szczególnych przypadkach, na przykład gdy rozgraniczona
           grupa poleceń mogła zostać rozgałęziona w proces tła, który nie powinien utrzymywać blokady.

       -w, --wait, --timeout sekundy
           Zawodzi, gdy blokady nie uda się pozyskać w czasie sekund. Dozwolona jest wartość w postaci ułamka
           dziesiętnego. Opcja -E określa użyty w takim przypadku status zakończenia. Zerowa wartość sekund jest
           interpretowana jako podanie opcji --nonblock.

       --fcntl
           Zamiast flock(2), nakłada blokadę opisu otwartego pliku fcntl(2) (tzn. korzystając z poleceń
           F_OFD_SETLK (nieblokujące) lub F_OFD_SETLKW (blokujące)). Blokady te są niezależne od nałożonych za
           pomocą flock(2), lecz w przeciwieństwie do tradycyjnych blokad fcntl() POSIX (F_SETLK, F_SETLKW),
           mają zachowanie odpowiadające blokadom flock(2).

       Dostępne tylko w wersjach jądra >= 3.15.

       --verbose
           Zgłasza jak długo zajęło pozyskanie blokady lub dlaczego nie udało się tego zrobić.

       -h, --help
           Wyświetla ten tekst i wychodzi.

       -V, --version
           Wyświetla wersję i wychodzi.

STATUS ZAKOŃCZENIA

       Polecenie korzysta z wartości statusu zakończenia z <sysexits.h> we wszystkich przypadkach, z wyjątkiem
       podania opcji -n lub -w, zgłaszających niepowodzenia w pozyskaniu blokady ze statusem zakończenia podanym
       opcją -E lub z domyślną wartością 1. Status zakończenia określony przez -E musi mieścić się w zakresie 0
       do 255.

       Przy korzystaniu z wariantu polecenie, jeśli wykonanie polecenia potomnego powiodło się, statusem
       zakończenia będzie status polecenia potomnego.

UWAGI

       flock nie wykrywa zakleszczeń. Więcej szczegółów w podręczniku flock(2).

       Niektóre systemy plików (np. NFS i CIFS) mają ograniczoną implementację flock(2) i flock może zawsze
       zawieść. Więcej szczegółów w podręcznikach flock(2), nfs(5) oraz mount.cifs(8). W zależności od opcji
       montowania, flock może na nich zawsze zawodzić.

PRZYKŁADY

       Proszę zwrócić uwagę, że "shell> " w poniższych przykładach jest znakiem zachęty wiersza poleceń.

       shell1> flock /tmp -c cat; shell2> flock -w .007 /tmp -c echo; /bin/echo $?
           Ustawia blokadę na wyłączność na katalogu /tmp, zatem drugie polecenie zawiedzie.

       shell1> flock -s /tmp -c cat; shell2> flock -s -w .007 /tmp -c echo; /bin/echo $?
           Ustawia blokadę współdzieloną na katalogu /tmp, zatem drugie polecenie nie zawiedzie. Proszę
           zauważyć, że próba uzyskania blokady na wyłączność drugim poleceniem zawiedzie.

       shell> flock -x lokalny-plik-blokady echo 'a b c'
           Uzyskuje blokadę na wyłączność "lokalny-plik-blokady" przed wykonaniem echo z argumentem 'a b c'.

       (; flock -n 9 || exit 1; # ... polecenia wykonane pod blokadą ...; ) 9>/var/lock/mojplikblokady
           Postać ta jest wygodna w skryptach powłoki. Tryb, z którego korzysta się do otwarcia pliku nie ma
           znaczenia dla flock; korzystanie z > lub >> pozwala na utworzenie pliku blokady, jeśli jeszcze nie
           istnieje, jednak potrzebne jest do tego uprawnienie do zapisu. Użycie < wymaga, aby plik już istniał,
           ale wymaga jest wówczas tylko uprawnienie do odczytu.

       [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || :
           Przydatny kod szablonowy do skryptów powłoki. Należy go umieścić na początku skryptu powłoki, który
           ma być objęty blokadą; zablokuje się on automatycznie przy pierwszym uruchomieniu. Jeśli zmienna
           środowiskowa $FLOCKER nie jest ustawiona, gdy skrypt powłoki zostanie uruchomiony, kod wykonuje flock
           oraz uzyskuje nieblokującą blokada na wyłączność (używając samego skryptu jako pliku blokady) przed
           ponownym wykonaniem się z prawidłowymi argumentami. Ustawia również zmienną środowiskową FLOCKER na
           prawidłową wartość, dzięki czemu polecenie nie będzie mogło być wykonane ponownie.

       shell> exec 4<>/var/lock/mojplikblokady; shell> flock -n 4
           Postać przydatna do blokowania pliku bez tworzenia podprocesu. Powłoka otwiera plik blokady do
           odczytu i zapisu jako deskryptor pliku 4, a następnie używa flock do zablokowania deskryptora.

AUTORZY

       H. Peter Anvin <hpa@zytor.com>

PRAWA AUTORSKIE

       Prawa autorskie zastrzeżone © 2003-2006 H. Peter Anvin. Jest to wolne oprogramowanie; warunki
       rozpowszechniania znajdują się w źródle programu. NIE ma gwarancji, nawet PRZYDATNOŚCI HANDLOWEJ czy
       PRZYDATNOŚCI DO OKREŚLONEGO CELU.

ZOBACZ TAKŻE

       flock(2), fcntl(2)

ZGŁASZANIE BŁĘDÓW

       Problemy należy zgłaszać w systemie śledzenia błędów <https://github.com/util-linux/util-linux/issues>.

DOSTĘPNOŚĆ

       Polecenie flock jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.41.2                                  2025-10-17                                           FLOCK(1)