Dopo aver esaminato la documentazione di bash, questa e questa domanda non mi è ancora chiaro come posso eseguire operazioni di scrittura atomica (aggiungere) su un file in bash. Ho uno script che viene eseguito in più istanze e ad un certo punto devo scrivere i dati in un file:
echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE
Come è possibile rendere atomiche tutte le operazioni di scrittura da tutti gli script in esecuzione contemporaneamente su quel file (in modo che i dati di un'istanza non si sovrappongano ai dati di un'altra)?
Risposta accettata:
Sembra che tu debba usare flock
come nell'esempio di 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
E inserisci tutti i tuoi comandi che devono essere atomici in ().