bash flock: ¿por qué 200?
(1)
No hay nada especial en el número 200. Simplemente resulta ser el ejemplo utilizado en la página de comando man del comando flock
; y resulta que es un número grande, por lo que es poco probable que entre en conflicto con el descriptor de archivo de cualquier otro archivo que abra durante su script.
En tu comentario, preguntas sobre:
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
Los paréntesis ()
crean una subshell; Un nuevo proceso, separado del proceso padre. El 200>/tmp/blah.lockfile
hace que el proceso abra el archivo /tmp/blah.lockfile
para escribir, en el descriptor de archivos 200. Los comandos dentro de los paréntesis se ejecutan dentro de ese shell.
flock -e 200
obtiene un bloqueo exclusivo en el archivo al que apunta el descriptor de archivos 200. Un bloqueo exclusivo significa que cualquier otra persona que intente obtener un bloqueo en ese archivo, ya sea exclusivo o compartido, bloqueará (espera) hasta que este bloqueo haya sido renuncie, o falle si alcanzan un tiempo de espera o si piden no bloquear. Por lo tanto, durante el resto del cuerpo de la subshell (los comandos echo
y sleep
), el subshell mantendrá el bloqueo, y nadie más podrá obtener ese bloqueo. Una vez que la subshell termine, el archivo se cerrará y el bloqueo se cancelará.
Con respecto a ese hilo: bash flock: salir si no se puede obtener el bloqueo
Apreciaré si alguien me puede explicar qué significa el ''200''.
He leído sobre el rebaño y parece que 200 si especificar un descriptor de archivo, pero ¿qué tiene de bueno este número?