GNU/Linux >> Tutoriels Linux >  >> Linux

Effectuer des opérations d'écriture atomique dans un fichier dans Bash ?

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 ().


Linux
  1. La fête ?

  2. Est-ce que Mv Atomic est sur le F?

  3. Comment parser un fichier CSV dans Bash ?

  4. Écrire dans le fichier .txt ?

  5. Shell - Écrire le contenu d'une variable dans un fichier

Comment lire un fichier ligne par ligne dans Bash

Commande de source bash

Bash :ajouter au fichier

Remplacement de chaîne dans Bash

35 exemples de scripts bash

Script bash (III)