FLOCK(1) Polecenia uzytkownika FLOCK(1) NAZWA flock - zarzadza blokadami ze skryptow powloki SKLADNIA flock [opcje] plik|katalog polecenie [argumenty] flock [opcje] plik|katalog -c polecenie flock [opcje] numer OPIS Program zarzadza blokami flock(2) z poziomu skryptow powloki lub z wiersza polecen. Pierwsza i druga z powyzszych postaci wywolania wiaze blokade z wykonaniem polecenia, w podobny sposob do su(1) lub newgrp(1). Blokowany jest podany plik lub katalog, ktory jest tworzony (przy odpowiednich uprawnieniach), jesli jeszcze nie istnial. Domyslnie, jesli blokada nie moze byc od razu pozyskana, flock poczeka, az stanie sie dostepna. Trzecia postac uzywa otwartego pliku okreslonego numerem deskryptora pliku. Przyklady podane ponizej wskazuja na potencjalne zastosowania. OPCJE -c, --command polecenie Przekazuje powloce pojedyncze polecenie, bez argumentow, uzywajac opcji -c. -E, --conflict-exit-code liczba Status zakonczenia, uzywany gdy stosowana jest opcja -n i istnieje sprzeczna blokada, albo gdy stosowana jest opcja -w i osiagnie sie czas przeterminowania. Domyslna wartoscia jest 1. Liczba musi byc z zakresu od 0 do 255. -F, --no-fork Nie rozgalezia sie przed wykonaniem polecenia. Przy wykonaniu, proces flock jest zastepowany poleceniem, ktore kontynuuje utrzymywanie blokady. Opcja ta jest niekompatybilna z --close, poniewaz wowczas nie istnialoby nic, co mogloby utrzymywac blokade. -e, -x, --exclusive Uzyskuje blokade na wylacznosc, czasem okreslana jako blokade zapisu. Tak jest domyslnie. -n, --nb, --nonblocking Zawodzi zamiast czekac, gdy nie mozna od razu uzyskac blokady. Zob. opcje -E, aby poznac uzywany status zakonczenia. -o, --close Zamyka deskryptor pliku na ktorym utrzymywana jest blokada, przed wykonaniem polecenia. Jest to przydatne, gdy polecenie tworzy proces potomny, ktory nie powinien utrzymywac blokady. -s, --shared Uzyskuje blokade wspoldzielona, czasem okreslana jako blokade odczytu. -u, --unlock Porzuca blokade. Nie jest to zwykle wymagane, poniewaz blokada jest automatycznie porzucana przy zamykaniu pliku. Opcja moze byc wymagana w szczegolnych przypadkach, na przyklad gdy rozgraniczona grupa polecen mogla zostac rozgaleziona w proces tla, ktory nie powinien utrzymywac blokady. -w, --wait, --timeout sekundy Zawodzi, gdy blokady nie uda sie pozyskac w czasie sekund. Dozwolona jest wartosc w postaci ulamka dziesietnego. Opcja -E okresla uzyty w takim przypadku status zakonczenia. Zerowa wartosc sekund jest interpretowana jako podanie opcji --nonblock. --fcntl Instead of flock(2), apply an fcntl(2) open file description lock (that is, using the F_OFD_SETLK (non-blocking) or F_OFD_SETLKW (blocking) commands). These locks are independent of those applied via flock(2), but, unlike traditional POSIX fcntl(2) locks (F_SETLK, F_SETLKW), have semantics matching those of flock(2). Dostepne tylko w wersjach jadra >= 3.15. --start offset The starting offset for lock. This option implies --fcntl. --length number The number of bytes to lock. This option implies --fcntl. --verbose Zglasza jak dlugo zajelo pozyskanie blokady lub dlaczego nie udalo sie tego zrobic. -h, --help Wyswietla ten tekst i wychodzi. -V, --version Wyswietla wersje i wychodzi. STATUS ZAKONCZENIA Polecenie korzysta z wartosci statusu zakonczenia z we wszystkich przypadkach, z wyjatkiem podania opcji -n lub -w, zglaszajacych niepowodzenia w pozyskaniu blokady ze statusem zakonczenia podanym opcja -E lub z domyslna wartoscia 1. Status zakonczenia okreslony przez -E musi miescic sie w zakresie 0 do 255. Przy korzystaniu z wariantu polecenie, jesli wykonanie polecenia potomnego powiodlo sie, statusem zakonczenia bedzie status polecenia potomnego. UWAGI flock nie wykrywa zakleszczen. Wiecej szczegolow w podreczniku flock(2). Niektore systemy plikow (np. NFS i CIFS) maja ograniczona implementacje flock(2) i flock moze zawsze zawiesc. Wiecej szczegolow w podrecznikach flock(2), nfs(5) oraz mount.cifs(8). W zaleznosci od opcji montowania, flock moze na nich zawsze zawodzic. PRZYKLADY Prosze zwrocic uwage, ze "shell> " w ponizszych przykladach jest znakiem zachety wiersza polecen. shell1> flock /tmp -c cat; shell2> flock -w .007 /tmp -c echo; /bin/echo $? Ustawia blokade na wylacznosc na katalogu /tmp, zatem drugie polecenie zawiedzie. shell1> flock -s /tmp -c cat; shell2> flock -s -w .007 /tmp -c echo; /bin/echo $? Ustawia blokade wspoldzielona na katalogu /tmp, zatem drugie polecenie nie zawiedzie. Prosze zauwazyc, ze proba uzyskania blokady na wylacznosc drugim poleceniem zawiedzie. shell> flock -x lokalny-plik-blokady echo 'a b c' Uzyskuje blokade na wylacznosc "lokalny-plik-blokady" przed wykonaniem echo z argumentem 'a b c'. (; flock -n 9 || exit 1; # ... polecenia wykonane pod blokada ...; ) 9>/var/lock/mojplikblokady Postac ta jest wygodna w skryptach powloki. Tryb, z ktorego korzysta sie do otwarcia pliku nie ma znaczenia dla flock; korzystanie z > lub >> pozwala na utworzenie pliku blokady, jesli jeszcze nie istnieje, jednak potrzebne jest do tego uprawnienie do zapisu. Uzycie < wymaga, aby plik juz istnial, ale wymaga jest wowczas tylko uprawnienie do odczytu. [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || : Przydatny kod szablonowy do skryptow powloki. Nalezy go umiescic na poczatku skryptu powloki, ktory ma byc objety blokada; zablokuje sie on automatycznie przy pierwszym uruchomieniu. Jesli zmienna srodowiskowa $FLOCKER nie jest ustawiona, gdy skrypt powloki zostanie uruchomiony, kod wykonuje flock oraz uzyskuje nieblokujaca blokada na wylacznosc (uzywajac samego skryptu jako pliku blokady) przed ponownym wykonaniem sie z prawidlowymi argumentami. Ustawia rowniez zmienna srodowiskowa FLOCKER na prawidlowa wartosc, dzieki czemu polecenie nie bedzie moglo byc wykonane ponownie. shell> exec 4<>/var/lock/mojplikblokady; shell> flock -n 4 Postac przydatna do blokowania pliku bez tworzenia podprocesu. Powloka otwiera plik blokady do odczytu i zapisu jako deskryptor pliku 4, a nastepnie uzywa flock do zablokowania deskryptora. AUTORZY H. Peter Anvin PRAWA AUTORSKIE Prawa autorskie zastrzezone (C) 2003-2006 H. Peter Anvin. Jest to wolne oprogramowanie; warunki rozpowszechniania znajduja sie w zrodle programu. NIE ma gwarancji, nawet PRZYDATNOSCI HANDLOWEJ czy PRZYDATNOSCI DO OKRESLONEGO CELU. ZOBACZ TAKZE flock(2), fcntl(2) ZGLASZANIE BLEDOW Problemy nalezy zglaszac w systemie sledzenia bledow . DOSTEPNOSC Polecenie flock jest czescia pakietu util-linux, ktory mozna pobrac ze strony Archiwum jadra Linux . util-linux 2.42 2026-04-01 FLOCK(1)