Non c'è niente di speciale sul numero 200. È proprio l'esempio utilizzato nella pagina man del comando flock
; e capita di essere un numero elevato, quindi è improbabile che sia in conflitto con il descrittore di file di qualsiasi altro file che apri durante lo script.
nel tuo commento, ti chiedi:
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
Le parentesi ()
creare una subshell; un nuovo processo, separato dal processo principale. Lo 200>/tmp/blah.lockfile
causa l'apertura di tale processo /tmp/blah.lockfile
per la scrittura, sul descrittore di file 200. I comandi all'interno delle parentesi vengono eseguiti all'interno di tale shell.
flock -e 200
ottiene un blocco esclusivo sul file indicato dal descrittore di file 200. Un blocco esclusivo significa che chiunque altro cerchi di ottenere un blocco su quel file, esclusivo o condiviso, bloccherà (attendere) finché questo blocco non avrà stato ceduto, o fallito se hanno raggiunto un timeout o chiesto di non bloccare. Quindi, durante il resto del corpo della subshell (i comandi echo
e sleep
), il blocco sarà trattenuto da quella sottotitola e nessun altro potrà ottenere quel blocco. Una volta terminata la subshell, il file verrà chiuso e il blocco verrà abbandonato.
fonte
2012-11-25 14:23:47
È solo un numero di descrittore di file arbitrario. – Mat