Provided by: manpages-fr_4.13-4_all 

NOM
flock - Gérer des verrous depuis des scripts d'interpréteur
SYNOPSIS
flock [options] fichier|répertoire commande [arguments]
flock [options] fichier|répertoire -c commande
flock [options] numéro
DESCRIPTION
Cet utilitaire gère les verrous flock(2) à partir de scripts d'interpréteur ou de la ligne de commande.
Les première et deuxième formes précédentes enveloppent l'exécution d'une commande par un verrou, de
façon similaire à su(1) ou newgrp(1). Elles verrouillent soit le fichier, soit le répertoire indiqué, qui
est créé (en supposant que vous ayez les droits adéquats) s'il n'existe pas déjà. Par défaut, si le
verrou ne peut pas être obtenu immédiatement, flock attend jusqu’à ce que le verrou soit disponible.
La troisième forme utilise un fichier ouvert par son numéro de descripteur de fichier. Consultez les
exemples suivants montrant comment l’utiliser.
OPTIONS
-c, --command commande
Passer une seule commande, sans argument, à l’interpréteur de commandes avec -c.
-E, --conflict-exit-code numéro
Le code de retour utilisé quand l’option -n est utilisée et que le verrou en conflit existe, ou que
l’option -w est utilisée et que le délai est atteint. La valeur par défaut est 1. Le nombre doit être
compris entre 0 et 255.
-F, --no-fork
Ne pas forker avant d'exécuter commande. Pendant l'exécution, le processus flock est remplacé par
commande qui garde le verrou. Cette option est incompatible avec --close, sans quoi plus rien ne
conserverait le verrou.
-e, -x, --exclusive
Obtenir un verrou exclusif, parfois appelé verrou en écriture. C'est l'option par défaut.
-n, --nb, --nonblock
Échouer plutôt qu’attendre si le verrou ne peut pas être obtenu immédiatement. Consultez l’option -E
pour le code de retour utilisé.
-o, --close
Fermer le descripteur de fichier sur lequel le verrou est maintenu avant l'exécution de commande.
C'est utile si commande lance un processus enfant qui ne devrait pas détenir le verrou.
-s, --shared
Obtenir un verrou partagé, parfois appelé verrou en lecture.
-u, --unlock
Supprimer un verrou. Ce n'est généralement pas nécessaire, puisqu'un verrou est automatiquement
supprimé lorsque le fichier est fermé. Cependant, il peut être nécessaire dans des cas particuliers,
par exemple si le groupe de commandes inclus a engendré un processus en arrière-plan qui ne devrait
pas détenir le verrou.
-w, --wait, --timeout délai
Échouer si le verrou ne peut pas être obtenu en délai secondes. Les valeurs en fractions décimales
sont permises. Consultez l’option -E pour le code de retour utilisé. Un délai nul est interprété
comme --nonblock.
--verbose
Renvoyer la durée d'acquisition du verrou ou la raison pour laquelle il n'a pas pu être obtenu.
-V, --version
Afficher le nom et la version du logiciel et quitter.
-h, --help
Afficher l’aide-mémoire puis quitter.
CODE DE RETOUR
La commande utilise les valeurs de code de retour de sysexits.h pour tout, sauf avec les options -n ou
-w, qui signalent un échec d’obtention du verrou avec un code de retour donné par l’option -E, ou avec 1
par défaut. Le code de retour donné par -E doit être compris entre 0 et 255.
En utilisant la variante commande et si l’exécution de l’enfant a fonctionné, le code de retour est celui
de la commande enfant.
EXEMPLES
Notez que « shell> » dans les exemples ci-dessous est une invite de commande.
shell1> flock /tmp -c cat; shell2> flock -w .007 /tmp -c echo; /bin/echo $?
Définir un verrou exclusif sur le répertoire /tmp et la seconde commande échouera.
shell1> flock -s /tmp -c cat; shell2> flock -s -w .007 /tmp -c echo; /bin/echo $?
Définir un verrou partagé sur le répertoire /tmp et la seconde commande n’échouera pas. Remarquez que
la tentative d’obtenir un verrou exclusif avec la seconde commande aurait échoué.
shell> flock -x fichier_verrou_local echo 'a b c'
Récupérer le verrou exclusif « fichier_verrou_local » avant d’exécuter echo avec 'a b c'.
(; flock -n 9 || exit 1; # ... commandes exécutées sous un verrou ...; ) 9>/var/lock/mon_fichier_verrou
Cette forme est pratique dans les scripts d’interpréteur de commandes. Le mode utilisé pour ouvrir le
fichier n'est pas important pour flock ; utiliser > ou >> permet de créer le fichier de verrouillage
s'il n'existe pas déjà, cependant, le droit d'écriture est nécessaire. En utilisant <, le fichier
doit déjà exister, mais seul le droit de lecture est nécessaire.
[ ${FLOCKER} != $0 ] && exec env FLOCKER=
Voici un code passe-partout utile pour les scripts d’interpréteur. Placez-le au début du script
d’interpréteur que vous voulez verrouiller et il se verrouillera lui-même automatiquement lors de
la première exécution. Si la variable d’environnement $FLOCKER n’est pas définie pour le script
d’interpréteur en cours d’exécution, alors flock est exécuté et un verrou non bloquant exclusif
est récupéré (en utilisant le script lui-même comme fichier de verrouillage) avant que le script
ne s’exécute de nouveau avec les bons arguments. La variable d’environnement FLOCKER est aussi
définie à la bonne valeur pour que le script ne s’exécute pas de nouveau.
shell> exec 4<>/var/lock/mon_fichier_verrou; shell> flock -n 4
Cette forme est pratique pour verrouiller un fichier sans engendrer un sous-processus. L'interpréteur
ouvre le fichier verrou en lecture et en écriture en tant que descripteur de fichier 4, puis flock
est utilisé pour verrouiller le descripteur.
AUTEURS
H. Peter Anvin <hpa@zytor.com>
COPYRIGHT
Copyright © 2003-2006 H. Peter Anvin. C'est un logiciel libre ; consultez les sources pour les conditions
de copie. Il n'y a AUCUNE garantie ; même pas de VALEUR MARCHANDE ou d'ADÉQUATION À UNE UTILISATION
PARTICULIÈRE.
VOIR AUSSI
flock(2)
SIGNALER DES BOGUES
Pour envoyer un rapport de bogue, utilisez le système de gestion des problèmes à l'adresse
https://github.com/karelzak/util-linux/issues.
DISPONIBILITÉ
La commande flock fait partie du paquet util-linux, téléchargeable sur Linux Kernel Archive
<https://www.kernel.org/pub/linux/utils/util-linux/>.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <ccb@club-internet.fr>,
Michel Quercia <quercia AT cal DOT enst DOT fr>, Thierry Vignaud <tvignaud@mandriva.com>, Frédéric
Delanoy <delanoy_f@yahoo.com>, Thierry Vignaud <tvignaud@mandriva.com>, Christophe Sauthier
<christophe@sauthier.com>, Sébastien Blanchet, Jérôme Perzyna <jperzyna@yahoo.fr>, Aymeric Nys <aymeric
AT nnx POINT com>, Alain Portal <aportal@univ-montp2.fr>, Thomas Huriaux <thomas.huriaux@gmail.com>, Yves
Rütschlé <l10n@rutschle.net>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Philippe Piette <foudre-blanche@skynet.be>, Jean-Baka Domelevo-Entfellner
<domelevo@gmail.com>, Nicolas Haller <nicolas@boiteameuh.org>, Sylvain Archenault
<sylvain.archenault@laposte.net>, Valéry Perrin <valery.perrin.debian@free.fr>, Jade Alglave
<jade.alglave@ens-lyon.org>, Nicolas François <nicolas.francois@centraliens.net>, Alexandre Kuoch
<alex.kuoch@gmail.com>, Lyes Zemmouche <iliaas@hotmail.fr>, Florentin Duneau <fduneau@gmail.com>,
Alexandre Normand <aj.normand@free.fr>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL
<jpmengual@debian.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
util-linux 2.37.3 24 janvier 2022 FLOCK(1)