informatique:bash:execution-unique-d-un-script-bash

Exécution unique d'un script BASH

Nom de la section Il arrive que l'on est besoin d'exécuter de manière un script. C'est à dire que le script ne doit pas démarré alors que le précédent lancement n'est pas terminé.

Il faut savoir que lorsqu'un script ou un programme s'exécute, le système d'exploitation lui attribue un identifiant unique, appelé process id.

Le script doit s'assurer une execution unique. Pour se faire, il déclarera son process id dans un fichier. Le fichier sera consulté systématiquement au démarrage. Si le process id est toujours en cours d'exécution, alors l'exéction qui vient de démarrer, s'arrêtera.

Voici l'algo proposé :

lire le process id dans le fichier
le process existe-il encore ?
si oui
  alors EXIT
sinon
  remplacer le process id par le notre
  continuer l'execution du script
  
  
...


supprimer le fichier contenant le process id

En BASH, voici le code proposé pour un script de sauvegarde :

if [ -f /root/save.pid ]; then
        pid_in_file=$(cat /root/save.pid)
        if [ -d /proc/$pid_in_file ]; then
                echo -e Une sauvegarde est en cours
                exit;
        else
                rm /root/save.pid
        fi
fi
echo $$>/root/save.pid
 
 
....
 
 
rm /root/save.pid
Entrer votre commentaire. La syntaxe wiki est autorisée:
Si vous ne pouvez pas lire le code, téléchargez ce fichier .wav pour l'écouter.
 
  • informatique/bash/execution-unique-d-un-script-bash.txt
  • Dernière modification: 2020/12/25 23:14
  • de Cédric ABONNEL