Jak działa ten przykład kanonicznego stada?

Kiedy trzeba zsynchronizować programy (skrypty powłoki) przez system plików, znalazłemflockbyć oparte na rozwiązaniuZalecana (powinien również działaćna NFS). Kanoniczny przykład użycia skryptu (zhttp://linux.die.net/man/1/flock) jest:

(
flock -s 200

# ... commands executed under lock ...

) 200>/var/lock/mylockfile 

Nie rozumiem, dlaczego ta cała konstrukcja zapewnia atomowość. W szczególności zastanawiam się, w jakiej kolejnościflock -s 200 i200>/var/lock/mylockfile są wykonywane, gdy np.bash wykonuje te wiersze kodu. Czy ten porządek jest gwarantowany / deterministyczny? Tak to rozumiemmusi być deterministycznym, jeśli ten idiom powinien działać. Ale ponieważ powłoka podrzędna jest wywoływana w procesie potomnym, nie rozumiem, jak te dwa procesy się synchronizują. Widzę już tylko wyścig między tymi dwoma poleceniami.

Byłbym wdzięczny, gdyby ktoś mógł spowodować, że moje zamieszanie wokół tego zniknie i wyjaśnić, dlaczego ten konstrukt może być użyty do bezpiecznej synchronizacji procesów.

Jednocześnie, jeśli ktoś wie, byłbym zainteresowany tym, jak bezpieczne jest wybranie jakiegoś arbitralnego pliku (np.200 w przykładzie), szczególnie w kontekście dużego systemu plików NFS z wieloma klientami.

questionAnswers(1)

yourAnswerToTheQuestion