Cron et script - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 01-02-2012 à 21:42:10
Le mécanisme généralement utilisé est le suivant
1. le script crée un fichier, typiquement quelque part dans /var/run/ et y indique son pid (typiquement le nom du fichier est le nom du process/script)
2. il fait son taf
3. lorsqu'il finit son taf, il supprime le fichier
4. un nouvel appel du script vérifie si ce fichier existe, et si le process tourne bien
4.1 si oui : il ne va pas plus loin
4.2 si non : il fait 1, 2, 3
Si tu ne peux modifier ton script, tu fais un script bash "lanceur" qui fait c'est check et lance le vrai script et attend qu'il le termine. Bref, je pense que tu as saisi le concept
Marsh Posté le 01-02-2012 à 22:12:13
Oui as tu des tuto pour un modèle de batch comme ça
Le problème est qu il est possible que le script plante qui est lance donc dans ce cas le batch reprendrait la main de toute façon non? donc supprimera le fichier?
Marsh Posté le 02-02-2012 à 08:22:09
ionik a écrit : Oui as tu des tuto pour un modèle de batch comme ça |
Je ne sais pas.
ionik a écrit : Le problème est qu il est possible que le script plante qui est lance donc dans ce cas le batch reprendrait la main de toute façon non? donc supprimera le fichier? |
A toi de faire le script correctement
- attendre que ton truc ruby se termine
- vérifier qu'il se termine bien.
- au démarrage vérifier si le fichier existe vérifier que le process qui y indiqué (via le pid) tourne bien et n'est pas dans un état à la con
renseigne toi sur les scripts bash et les processus, des tutos pour ça, il en existe.
Marsh Posté le 02-02-2012 à 08:55:57
Reply
Marsh Posté le 01-02-2012 à 21:26:29
Salut et merci pour votre aide.
J'explique ma situation, je voudrais pouvoir lancer une commande cron ou un cron qui lance un batch mais uniquement dans le cas ou le précédent lancement est fini.
Je détaille
Toutes les 1 minutes je demande le lancement de mon script
Celui ci ferait un test pour savoir si l'ancien tourne toujours et dans le cas ou il tourne pas, il lancerait son exécution.
C'est une commande d'un srcipt ruby que je lancerais. Si quelqu'un sait comment lancer une tache et savoir si celle ci est fini pour la relancer ou non, ce serait sympa de me donner des indices si vous en avez
Ps : la commande a une durée indéterminé et donc je ne sais vraiment pas quand elle est fini d'ou le check et le relancer au besoin.
---------------
Recette cookeo Recette de cuisine