Mon script bash est-il déjà lancé ?

Il m’arrive souvent d’utiliser la combinaison cron et script bash pour automatiser des tâches.

Mais voilà, parfois elles sont longues a s’exécuter ou le volume de données à traiter est important et cela peut durer des heures.

Afin d’éviter que le script se relance alors qu’il se trouve déjà en exécution, voici ma façon de procéder.

L’ensemble des lignes sont à rajouter dans votre propre script. Il y a aussi obligation qu’il se termine en “.sh” et l’utilisation de _ pour les espacements.

let "PROCESS_RUNNING=$(ps -ax | grep $(echo $0 | grep -o '\w*.sh$') | wc -l) - 3"

if [ ${PROCESS_RUNNING} -gt 1 ]
then
        echo "Proccess ${PROCESS_NAME} is already running"
        exit 1;
else
        ..... Votre code ici .....
        exit 0;
fi

Voilà plus de risque qu’une tâche soit lancée plusieurs fois par un “cron” !

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *