Empecher une double execution d'un script

Gunther -  
 Gunther -
Bonjour,

J'ai un script titi.sh qui s'execute par un cron toutes les 10 minutes sur un serveur. De temps en temps, la durée d'execution de ce script peut dépasser les 10 minutes, et je souhaite faire en sorte que ce script ne s'execute pas quand il est déjà en cours d'execution.

J'ai essayé de mettre un PID dans un fichier, mais cela ne marche pas.

Y a-t-il moyen (sous solaris 9) de lancer un script en empechant le script de se rééxécuter tant qu'il n'a pas fini ?

Merci d'avance.

Gunther
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    as-tu essayer de tester le contenu de
    ps aux | grep nomscript
    et en fonction de résultat tu sors avec exit ou les commandes de ton script peuvent s'exécuter

    enfin, c'est juste une idée, je n'ai ps testé

    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tu peux aussi créer ce qu'on appelle un "verrou", autrement dit un répertoire (dans /tmp par exemple), au lancement de ton script (avec un test) et en fonction du code retour, exécuter ton script (et détruire le rep en fin de script) ou l'avorter.
    #!/bin/bash
    
    if mkdir /tmp/verrou.lock 2>/dev/null
    then
            cmd
            ...
            cmd
            ...
    
            rmdir /tmp/verrou.lock
    else
           echo "Script déjà en cours d'exécution."
           exit 3
    fi
    
    ;-))
    0
    1. Gunther
       
      Merci pour cette info, je m'en vais tester cela tout de suite (désolé pour le délai de la réponse, mais je me suis fait aggresser par une charge de travail trop grande ;o) )
      0