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” !
Leave a Reply