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¶
- -s, --shared
- Obtenir un verrou partagé, parfois appelé verrou en
lecture.
- -x, -e, --exclusive
- Obtenir un verrou exclusif, parfois appelé verrou en
écriture. C'est l'option par défaut.
- -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.
- -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é.
- -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.
- -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 fils qui ne devrait pas détenir le verrou.
- -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.
- -c, --commande commande
- Passer une seule commande, sans argument, à
l’interpréteur de commandes avec -c.
- -h, --help
- Afficher un texte d'aide puis quitter.
- -V, --version
- Afficher les informations sur la version et quitter.
EXEMPLES¶
- 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/monfichierverrou 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="$0" flock -en "$0" "$0"
"$@" || :
- C’est 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.
CODES DE RETOUR¶
La commande utilise les valeurs de retour de
sysexits.h pour tout, sauf
quand les options
-n ou
-w sont utilisées. Elles
signalent un échec d’obtention du verrou avec une valeur de
retour donnée par l’option
-E ou 1 par défaut.
En utilisant la variante
commande et que l’exécution de la
fille a fonctionné, le code de retour est celui de la commande fille.
AUTEUR¶
H. Peter Anvin
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)
DISPONIBILITɶ
La commande
flock fait partie du paquet util-linux, elle est disponible
sur
l’archive
du noyau Linux
TRADUCTION¶
Cette page de manuel a été traduite et est maintenue par Lyes
Zemmouche et les membres de la liste <debian-l10n-french AT lists DOT
debian DOT org>. Veuillez signaler toute erreur de traduction par un
rapport de bogue sur le paquet manpages-fr-extra.