Después de revisar la documentación de bash, esta pregunta y esta, todavía no tengo claro cómo puedo realizar operaciones de escritura atómica (agregar) a un archivo en bash. Tengo un script que se ejecuta en varias instancias y en algún momento debo escribir datos en un archivo:
echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE
¿Cómo es posible hacer que todas las operaciones de escritura de todos los scripts que se ejecutan simultáneamente en ese archivo sean atómicas (para que los datos de una instancia no se superpongan con los datos de otra)?
Respuesta aceptada:
Parece que necesitas usar flock
como en el ejemplo de 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
Y pon todos tus comandos que deben ser atómicos en ().