Theres nichts besonderes über die Zahl 200. Es ist nur zufällig das Beispiel in der man-Seite des Befehls flock
verwendet; und es handelt sich um eine große Zahl. Es ist daher unwahrscheinlich, dass sie mit dem Dateideskriptor einer anderen Datei in Konflikt steht, die Sie während des Skripts öffnen.
In Ihrem Kommentar, fragen Sie:
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
Die Klammern ()
eine Subshell erstellen; ein neuer Prozess, getrennt vom übergeordneten Prozess. Die 200>/tmp/blah.lockfile
bewirkt, dass dieser Prozess /tmp/blah.lockfile
zum Schreiben auf Dateideskriptor 200 öffnet. Die Befehle innerhalb der Klammern werden innerhalb dieser Shell ausgeführt.
flock -e 200
erhält eine exklusive Sperre für die Datei, auf die der Dateideskriptor 200 zeigt. Eine exklusive Sperre bedeutet, dass jeder, der versucht, eine Sperre für diese Datei zu erhalten, entweder exklusiv oder freigegeben, blockiert (wartet) aufgegeben wurden, oder fehlschlagen, wenn sie eine Zeitüberschreitung oder eine Blockade nicht erreichen. Während des restlichen Rumpfes der Subshell (echo
und sleep
Befehle) wird die Sperre von dieser Subshell gehalten, und niemand kann diese Sperre erhalten. Sobald die Subshell beendet ist, wird die Datei geschlossen und die Sperre aufgehoben.
Es ist nur eine beliebige Datei-Deskriptor-Nummer. – Mat