Como funciona esse exemplo de rebanho canônico?

Quando se deve sincronizar programas (shell scripts) via sistema de arquivos, eu encontrei umflocksolução baseada emrecomendado (também deve funcionarno NFS). O exemplo canônico para uso de dentro de um script (dehttp://linux.die.net/man/1/flock) é:

(
flock -s 200

# ... commands executed under lock ...

) 200>/var/lock/mylockfile 

Eu não entendo porque essa construção toda garante a atomicidade. Em particular, eu estou querendo saber em qual ordemflock -s 200 e200>/var/lock/mylockfile são executados quando, e.bash executa estas linhas de código. Esta ordem é garantida / determinista? Do jeito que eu entendi,devo ser determinista se este idioma deve funcionar. Mas como um sub shell é gerado em um processo filho, não entendo como esses dois processos se sincronizam. Eu só vejo uma condição de corrida entre esses dois comandos já.

Eu apreciaria se alguém pudesse fazer minha confusão sobre isso desaparecer e explicar por que essa construção pode ser usada para sincronizar processos com segurança.

Ao mesmo tempo, se alguém souber, eu estaria interessado em como é seguro escolher apenas algum descritor de arquivo arbitrário (como200 no exemplo), especialmente no contexto de um sistema de arquivos NFS grande com muitos clientes.

questionAnswers(1)

yourAnswerToTheQuestion