Bonjour,
Quelle est la manière la plus simple d'empêcher qu'un shell lancé toutes les minutes par cron ne s'exécute une seconde fois tant que le premier lancement n'est pas terminé.
Merci
Bonjour,
Quelle est la manière la plus simple d'empêcher qu'un shell lancé toutes les minutes par cron ne s'exécute une seconde fois tant que le premier lancement n'est pas terminé.
Merci
Au lancement de ton script, tu testes la présence d'un fichier particulier (de tête, if [ -e $fichier]). S'il existe, tu t'arrêtes. Sinon, tu le crées (touch $fichier), puis tu fais ton petit bazar. Une fois que tu as finis, tu effaces le fichier, et voila.
Evidemment, il faut que ledit fichier soit dans un coin accessible à l'utilisateur qui lance le script, et pas à tout le monde.
Et tu dois faire attention à ce que ton script ne puisse pas se terminer sans avoir effacé le fichier de verrouillage, sinon tu devras revenir l'effacer à la main.
Il y a aussi la possiblité de faire unet de tester le code de retour. Mais pour un truc lancé toutes les minutes, je préfère la solution du fichier. Faire un ps/grep crée 3 processus supplémentaires à chaque lancement. C'est pas grand chose, mais si on peut l'éviter, ce n'est pas plus mal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps aux |grep -v grep |grep -q $0
autre solution :
ne pas utiliser la crontab mais le script de lancement rc.local (1 seul fois le script sera lancer au boot) puis dans le script en questions 2 solutions :
- terminer par un sleep 60 : la commande sleep ne prend pas de temp CPU
- a la fin du script le relancer via la commande at (at now + 1 minutes mon script)
de cette façon il n'y aurra jamais 2 lancements .....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager