'\" t .\" Title: flock .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-04-01 .\" Manual: Polecenia użytkownika .\" Source: util-linux 2.42 .\" Language: English .\" .TH "FLOCK" "1" "2026-04-01" "util\-linux 2.42" "Polecenia użytkownika" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "NAZWA" flock \- zarządza blokadami ze skryptów powłoki .SH "SKŁADNIA" .sp \fBflock\fP [opcje] \fIplik\fP|\fIkatalog\fP \fIpolecenie\fP [\fIargumenty\fP] .sp \fBflock\fP [opcje] \fIplik\fP|\fIkatalog\fP \fB\-c\fP \fIpolecenie\fP .sp \fBflock\fP [opcje] \fInumer\fP .SH "OPIS" .sp Program zarządza blokami \fBflock\fP(2) z poziomu skryptów powłoki lub z wiersza poleceń. .sp Pierwsza i druga z powyższych postaci wywołania wiąże blokadę z wykonaniem \fIpolecenia\fP, w podobny sposób do \fBsu\fP(1) lub \fBnewgrp\fP(1). Blokowany jest podany \fIplik\fP lub \fIkatalog\fP, który jest tworzony (przy odpowiednich uprawnieniach), jeśli jeszcze nie istniał. Domyślnie, jeśli blokada nie może być od razu pozyskana, \fBflock\fP poczeka, aż stanie się dostępna. .sp Trzecia postać używa otwartego pliku określonego \fInumerem\fP deskryptora pliku. Przykłady podane poniżej wskazują na potencjalne zastosowania. .SH "OPCJE" .sp \fB\-c\fP, \fB\-\-command\fP \fIpolecenie\fP .RS 4 Przekazuje powłoce pojedyncze \fIpolecenie\fP, bez argumentów, używając opcji \fB\-c\fP. .RE .sp \fB\-E\fP, \fB\-\-conflict\-exit\-code\fP \fIliczba\fP .RS 4 Status zakończenia, używany gdy stosowana jest opcja \fB\-n\fP i istnieje sprzeczna blokada, albo gdy stosowana jest opcja \fB\-w\fP i osiągnie się czas przeterminowania. Domyślną wartością jest \fB1\fP. \fILiczba\fP musi być z zakresu od 0 do 255. .RE .sp \fB\-F\fP, \fB\-\-no\-fork\fP .RS 4 Nie rozgałęzia się przed wykonaniem \fIpolecenia\fP. Przy wykonaniu, proces flock jest zastępowany \fIpoleceniem\fP, które kontynuuje utrzymywanie blokady. Opcja ta jest niekompatybilna z \fB\-\-close\fP, ponieważ wówczas nie istniałoby nic, co mogłoby utrzymywać blokadę. .RE .sp \fB\-e\fP, \fB\-x\fP, \fB\-\-exclusive\fP .RS 4 Uzyskuje blokadę na wyłączność, czasem określaną jako blokadę zapisu. Tak jest domyślnie. .RE .sp \fB\-n\fP, \fB\-\-nb\fP, \fB\-\-nonblocking\fP .RS 4 Zawodzi zamiast czekać, gdy nie można od razu uzyskać blokady. Zob. opcję \fB\-E\fP, aby poznać używany status zakończenia. .RE .sp \fB\-o\fP, \fB\-\-close\fP .RS 4 Zamyka deskryptor pliku na którym utrzymywana jest blokada, przed wykonaniem \fIpolecenia\fP. Jest to przydatne, gdy \fIpolecenie\fP tworzy proces potomny, który nie powinien utrzymywać blokady. .RE .sp \fB\-s\fP, \fB\-\-shared\fP .RS 4 Uzyskuje blokadę współdzieloną, czasem określaną jako blokadę odczytu. .RE .sp \fB\-u\fP, \fB\-\-unlock\fP .RS 4 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. .RE .sp \fB\-w\fP, \fB\-\-wait\fP, \fB\-\-timeout\fP \fIsekundy\fP .RS 4 Zawodzi, gdy blokady nie uda się pozyskać w czasie \fIsekund\fP. Dozwolona jest wartość w postaci ułamka dziesiętnego. Opcja \fB\-E\fP określa użyty w takim przypadku status zakończenia. Zerowa wartość \fIsekund\fP jest interpretowana jako podanie opcji \fB\-\-nonblock\fP. .RE .sp \fB\-\-fcntl\fP .RS 4 Instead of \fBflock\fP(2), apply an \fBfcntl\fP(2) open file description lock (that is, using the \fBF_OFD_SETLK\fP (non\-blocking) or \fBF_OFD_SETLKW\fP (blocking) commands). These locks are independent of those applied via \fBflock\fP(2), but, unlike traditional POSIX \fBfcntl\fP(2) locks (\fBF_SETLK\fP, \fBF_SETLKW\fP), have semantics matching those of \fBflock\fP(2). .sp Dostępne tylko w wersjach jądra >= 3.15. .RE .sp \fB\-\-start\fP \fIoffset\fP .RS 4 The starting offset for lock. This option implies \fB\-\-fcntl\fP. .RE .sp \fB\-\-length\fP \fInumber\fP .RS 4 The number of bytes to lock. This option implies \fB\-\-fcntl\fP. .RE .sp \fB\-\-verbose\fP .RS 4 Zgłasza jak długo zajęło pozyskanie blokady lub dlaczego nie udało się tego zrobić. .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 Wyświetla ten tekst i wychodzi. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 Wyświetla wersję i wychodzi. .RE .SH "STATUS ZAKOŃCZENIA" .sp Polecenie korzysta z wartości statusu zakończenia z we wszystkich przypadkach, z wyjątkiem podania opcji \fB\-n\fP lub \fB\-w\fP, zgłaszających niepowodzenia w pozyskaniu blokady ze statusem zakończenia podanym opcją \fB\-E\fP lub z domyślną wartością 1. Status zakończenia określony przez \fB\-E\fP musi mieścić się w zakresie 0 do 255. .sp Przy korzystaniu z wariantu \fIpolecenie\fP, jeśli wykonanie polecenia potomnego powiodło się, statusem zakończenia będzie status polecenia potomnego. .SH "UWAGI" .sp \fBflock\fP nie wykrywa zakleszczeń. Więcej szczegółów w podręczniku \fBflock\fP(2). .sp Niektóre systemy plików (np. NFS i CIFS) mają ograniczoną implementację \fBflock\fP(2) i flock może zawsze zawieść. Więcej szczegółów w podręcznikach \fBflock\fP(2), \fBnfs\fP(5) oraz \fBmount.cifs\fP(8). W zależności od opcji montowania, flock może na nich zawsze zawodzić. .SH "PRZYKŁADY" .sp Proszę zwrócić uwagę, że "shell> " w poniższych przykładach jest znakiem zachęty wiersza poleceń. .sp shell1> flock /tmp \-c cat; shell2> flock \-w .007 /tmp \-c echo; /bin/echo $? .RS 4 Ustawia blokadę na wyłączność na katalogu \fI/tmp\fP, zatem drugie polecenie zawiedzie. .RE .sp shell1> flock \-s /tmp \-c cat; shell2> flock \-s \-w .007 /tmp \-c echo; /bin/echo $? .RS 4 Ustawia blokadę współdzieloną na katalogu \fI/tmp\fP, zatem drugie polecenie nie zawiedzie. Proszę zauważyć, że próba uzyskania blokady na wyłączność drugim poleceniem zawiedzie. .RE .sp shell> flock \-x lokalny\-plik\-blokady echo \*(Aqa b c\*(Aq .RS 4 Uzyskuje blokadę na wyłączność "lokalny\-plik\-blokady" przed wykonaniem echo z argumentem \*(Aqa b c\*(Aq. .RE .sp (; flock \-n 9 || exit 1; # .\|.\|. polecenia wykonane pod blokadą .\|.\|.; ) 9>/var/lock/mojplikblokady .RS 4 Postać ta jest wygodna w skryptach powłoki. Tryb, z którego korzysta się do otwarcia pliku nie ma znaczenia dla \fBflock\fP; korzystanie z \fI>\fP lub \fI>>\fP pozwala na utworzenie pliku blokady, jeśli jeszcze nie istnieje, jednak potrzebne jest do tego uprawnienie do zapisu. Użycie \fI<\fP wymaga, aby plik już istniał, ale wymaga jest wówczas tylko uprawnienie do odczytu. .RE .sp [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock \-en "$0" "$0" "$@" || : .RS 4 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 \fB$FLOCKER\fP nie jest ustawiona, gdy skrypt powłoki zostanie uruchomiony, kod wykonuje \fBflock\fP 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ą \fBFLOCKER\fP na prawidłową wartość, dzięki czemu polecenie nie będzie mogło być wykonane ponownie. .RE .sp shell> exec 4<>/var/lock/mojplikblokady; shell> flock \-n 4 .RS 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 \fBflock\fP do zablokowania deskryptora. .RE .SH "AUTORZY" .sp .MTO "hpa\(atzytor.com" "H. Peter Anvin" "" .SH "PRAWA AUTORSKIE" .sp 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. .SH "ZOBACZ TAKŻE" .sp \fBflock\fP(2), \fBfcntl\fP(2) .SH "ZGŁASZANIE BŁĘDÓW" .sp Problemy należy zgłaszać w \c .URL "https://github.com/util\-linux/util\-linux/issues" "systemie śledzenia błędów" "." .SH "DOSTĘPNOŚĆ" .sp Polecenie \fBflock\fP jest częścią pakietu util\-linux, który można pobrać ze strony \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Archiwum jądra Linux" "."