Après avoir parcouru la documentation bash, cette question et celle-ci, je ne comprends toujours pas comment puis-je effectuer des opérations d'écriture atomique (ajout) sur un fichier dans bash. J'ai un script qui s'exécute dans plusieurs instances et qui, à un moment donné, doit écrire des données dans un fichier :
echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE
Comment est-il possible de rendre atomiques toutes les opérations d'écriture de tous les scripts exécutés simultanément dans ce fichier (afin que les données d'une instance ne chevauchent pas les données d'une autre) ?
Réponse acceptée :
Il semble que vous deviez utiliser flock
comme dans l'exemple 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
Et mettez toutes vos commandes qui doivent être atomiques dans ().