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

NUME
flock - gestionează blocările din scripturi shell
REZUMAT
flock [opțiuni] fișier|director comanda [argumente]
flock [opțiuni] fișier|director -c comanda
flock [opțiuni] număr
DESCRIERE
Această utilitate gestionează blocările flock(2) din cadrul scripturilor de tip shell sau din linia de
comandă.
Prima și a doua dintre formele de mai sus învăluie blocarea în jurul executării unei comenzi, într-un mod
similar cu su(1) sau newgrp(1). Acestea blochează un fișier sau un director specificat, care este creat
(presupunând permisiunile corespunzătoare) dacă nu există deja. În mod implicit, în cazul în care
blocarea nu poate fi obținută imediat, flock așteaptă până când blocarea este disponibilă.
Cea de-a treia formă utilizează un fișier deschis prin descriptorul de fișier număr. A se vedea exemplele
de mai jos pentru a afla cum poate fi utilizat.
OPȚIUNI
-c, --command comanda
Pasează o singură comandă, fără argumente, către shell cu -c.
-E, --conflict-exit-code număr
Starea de ieșire utilizată atunci când se utilizează opțiunea -n și există o blocare conflictuală sau
când se utilizează opțiunea -w și se depășește timpul de așteptare. Valoarea implicită este 1.
numărul trebuie să fie cuprins între 0 și 255.
-F, --no-fork
Nu creează o bifurcație înainte de a executa comanda. După execuție, procesul flock este înlocuit de
comandă, care continuă să dețină blocarea. Această opțiune este incompatibilă cu opțiunea --close,
deoarece altfel nu ar mai rămâne nimic care să păstreze blocajul.
-e, -x, --exclusive
Obține o blocare exclusivă, denumită uneori blocare la scriere. Aceasta este opțiunea implicită.
-n, --nb, --nonblock
Eșuează în loc să aștepte, dacă nu se poate obține imediat blocarea. A se vedea opțiunea -E pentru
starea de ieșire utilizată.
-o, --close
Închide descriptorul de fișier în care este deținut blocajul înainte de a executa comanda. Acest
lucru este util în cazul în care comanda generează un proces-copil care nu ar trebui să dețină
blocarea.
-s, --shared
Obține o blocare partajată, denumită uneori blocare la citire.
-u, --unlock
Înlătură o blocare. De obicei, acest lucru nu este necesar, deoarece o blocare este eliminată automat
atunci când fișierul este închis. Cu toate acestea, poate fi necesară în cazuri speciale, de exemplu,
dacă grupul de comenzi închis a bifurcat un proces în fundal care nu ar trebui să dețină blocarea.
-w, --wait, --timeout secunde
Eșuează dacă blocarea nu poate fi obținută în secunde. Sunt permise valorile fracționare zecimale. A
se vedea opțiunea -E pentru starea de ieșire utilizată. Numărul zero de secunde este interpretat ca
fiind --nonblock.
--fcntl
În loc de flock(2), aplică o blocare a descrierii fișierului deschis fcntl(2) (adică, utilizând
comenzile F_OFD_SETLK (neblocare) sau F_OFD_SETLKW (blocare)). Aceste blocaje sunt independente de
cele aplicate prin flock(2), dar, spre deosebire de blocajele tradiționale POSIX fcntl() (F_SETLK,
F_SETLKW), au o semantică care corespunde celei a flock(2).
Aceasta este disponibilă numai pe versiunile de nucleu >= 3.15.
--verbose
Raportează cât timp a durat obținerea blocării sau de ce nu a putut fi obținută.
-h, --help
Afișează acest mesaj de ajutor și iese.
-V, --version
Afișează versiunea și iese.
STARE DE IEȘIRE
Comanda utilizează valorile de stare de ieșire <sysexits.h> pentru orice lucru, cu excepția cazului în
care se utilizează oricare dintre opțiunile -n sau -w, care raportează un eșec de achiziționare a
blocării cu o stare de ieșire dată de opțiunea -E sau 1 în mod implicit. Starea de ieșire dată de -E
trebuie să fie cuprinsă între 0 și 255.
Atunci când se utilizează varianta comanda și se execută comanda-copil, atunci starea de ieșire este cea
a comenzii-copil.
NOTE
flock nu detectează blocajul blocării (deadlock). A se vedea flock(2) pentru detalii.
Unele sisteme de fișiere (de exemplu, NFS și CIFS) au o implementare limitată a flock(2) și este posibil
ca «flock» să eșueze întotdeauna. Pentru detalii, consultați flock(2), nfs(5) și mount.cifs(8). În
funcție de opțiunile de montare, «flock» poate eșua întotdeauna acolo.
EXEMPLE
Rețineți că „shell> ” din exemple este un prompt de linie de comandă.
shell1> flock /tmp -c cat; shell2> flock -w .007 /tmp -c echo; /bin/echo $?
Stabilește o blocare exclusivă a directorului /tmp și a doua comandă va eșua.
shell1> flock -s /tmp -c cat; shell2> flock -s -w .007 /tmp -c echo; /bin/echo $?
Stabilește blocarea partajată la directorul /tmp și a doua comandă nu va eșua. Observați că
încercarea de a obține o blocare exclusivă cu a doua comandă ar eșua.
shell> flock -x fișier-blocare-locală echo 'a b c'
Preia blocarea exclusivă „fișier-blocare-locală” înainte de a rula echo cu „a b c”.
(; flock -n 9 || exit 1; # ... comenzi executate sub blocare ...; ) 9>/var/lock/fișierul-meu-de-blocare
Formatul este convenabil în cadrul scripturilor shell. Modul utilizat pentru a deschide fișierul nu
contează pentru flock; utilizarea > sau >> permite crearea fișierului de blocare dacă acesta nu
există deja, însă este necesară permisiunea de scriere. Utilizarea < presupune ca fișierul să existe
deja, dar este necesară doar permisiunea de citire.
[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || :
Acesta este un cod auxiliar util pentru scripturile shell. Puneți-l în partea de sus a scriptului
shell pe care doriți să îl blocați și se va bloca automat la prima execuție. Dacă variabila de mediu
$FLOCKER nu este definită la scriptul de shell care este rulat, atunci execută flock și obține o
blocare exclusivă fără blocare (folosind scriptul însuși ca fișier de blocare) înainte de a se
reexecuta cu argumentele corecte. De asemenea, stabilește variabila de mediu FLOCKER la valoarea
corectă, astfel încât să nu se mai execute din nou.
shell> exec 4<>/var/lock/fișierul-meu-de-blocare; shell> flock -n 4
Această formă este convenabilă pentru a bloca un fișier fără a genera un subproces. Shell-ul deschide
fișierul de blocare pentru citire și scriere ca descriptor de fișier 4, apoi se utilizează flock
pentru a bloca descriptorul.
AUTORI
H. Peter Anvin <hpa@zytor.com>
DREPTURI DE AUTOR
Drepturi de autor © 2003-2006 H. Peter Anvin. Acesta este un software liber; consultați sursa pentru
condițiile de copiere. Nu există nicio garanție; nici măcar pentru COMERCIALIZARE sau ADECVARE LA UN SCOP
PARTICULAR.
CONSULTAȚI ȘI
flock(2), fcntl(2)
RAPORTAREA ERORILOR
Pentru rapoarte de eroare, folosiți sistemul de urmărire al erorilor
<https://github.com/util-linux/util-linux/issues>.
DISPONIBILITATE
Comanda flock face parte din pachetul util-linux care poate fi descărcat de la Linux Kernel Archive
<https://www.kernel.org/pub/linux/utils/util-linux/>.
util-linux 2.41.2 2025-10-17 FLOCK(1)