Nachdem ich die Bash-Dokumentation, diese Frage und diese durchgegangen bin, ist mir immer noch nicht klar, wie ich atomare Schreiboperationen (Anhängen) an einer Datei in Bash durchführen kann. Ich habe ein Skript, das in mehreren Instanzen ausgeführt wird und irgendwann Daten in eine Datei schreiben muss:
echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE
Wie ist es möglich, alle Schreibvorgänge von allen gleichzeitig ausgeführten Skripten in diese Datei atomar zu machen (damit Daten von einer Instanz nicht mit Daten einer anderen überlappen)?
Akzeptierte Antwort:
Es scheint, dass Sie flock
verwenden müssen wie im Beispiel von man (http://linux.die.net/man/1/flock)
(
flock -x 200
# Put here your commands that must do some writes atomically
) 200>/var/lock/mylockfile
Und fügen Sie alle Ihre Befehle, die atomar sein müssen, in ().
ein