GNU/Linux >> Tutoriels Linux >  >> Linux

Comment s'assurer qu'une seule instance d'un script Bash s'exécute ?

Une solution qui ne nécessite pas d'outils supplémentaires serait préférable.

Réponse acceptée :

Presque comme la réponse de nsg :utilisez un répertoire de verrouillage . La création de répertoires est atomique sous Linux et Unix et *BSD et beaucoup d'autres systèmes d'exploitation.

if mkdir $LOCKDIR
then
    # Do important, exclusive stuff
    if rmdir $LOCKDIR
    then
        echo "Victory is mine"
    else
        echo "Could not remove lock dir" >&2
    fi
else
    # Handle error condition
    ...
fi

Vous pouvez placer le PID du sh de verrouillage dans un fichier du répertoire de verrouillage à des fins de débogage, mais ne tombez pas dans le piège de penser que vous pouvez vérifier ce PID pour voir si le processus de verrouillage s'exécute toujours. De nombreuses conditions de course se trouvent sur cette voie.


Linux
  1. Comment rendre un répertoire partagé accessible par Sftp ?

  2. Comment passer des paramètres à un script Bash ?

  3. Ajouter un script bash au chemin

  4. Comment vérifier si un fichier existe dans un répertoire spécifique dans un script bash ?

  5. Comment exécuter un script bash ?

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment écrire un script bash avec des exemples

Tutoriel de script Bash pour les débutants :qu'est-ce que c'est, comment en écrire un et exemples de script

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment exécuter un script bash

Comment rendre ce script sed plus rapide ?