En ce qui concerne ce thread: bash flock: exit if can't acquisition lock
J'apprécierai si quelqu'un peut m'expliquer ce que signifie le "200".
J'ai lu sur le troupeau et il semble que 200 si pour spécifier un descripteur de fichier, mais qu'est-ce qui est si bon avec ce nombre?
Le nombre 200 n'a rien de spécial. Il se trouve que c'est l'exemple utilisé dans la page de manuel de la commande flock
; et il se trouve qu'il s'agit d'un grand nombre, il est donc peu probable qu'il entre en conflit avec le descripteur de fichier de tout autre fichier que vous ouvrez pendant votre script.
Dans votre commentaire, vous posez des questions sur:
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
Les parenthèses ()
crée un sous-shell; un nouveau processus, distinct du processus parent. Le 200>/tmp/blah.lockfile
provoque l'ouverture de ce processus /tmp/blah.lockfile
pour l'écriture, sur le descripteur de fichier 200. Les commandes entre parenthèses sont exécutées dans ce Shell.
flock -e 200
obtient un verrou exclusif sur le fichier pointé par le descripteur de fichier 200. Un verrou exclusif signifie que toute autre personne qui essaie d'obtenir un verrou sur ce fichier, exclusif ou partagé, bloquera (attendra) jusqu'à ce que ce verrou soit abandonné, ou échouer s'ils ont atteint un délai d'attente ou ont demandé de ne pas bloquer. Ainsi, pendant le reste du corps du sous-shell (les commandes echo
et sleep
), le verrou sera détenu par ce sous-shell, et personne d'autre ne pourra l'obtenir. Une fois le sous-shell terminé, le fichier sera fermé et le verrou abandonné.