Crontab - pb changement d'heure

Fermé
JM_contreband Messages postés 3 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 17 avril 2007 - 12 avril 2007 à 10:03
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 18 avril 2007 à 15:53
Bonjour à tous,

Je travaille dans une entreprise ferroviaire française et nous avons rencontré un problème lors du passage à l'heure d'été : Les scripts qui étaient cronés entre 2:00:00 et 3:00:00 se sont lancés simultanément à 3:00:00... Dont plusieurs fois le même processus, ce qui a créé un gros souci sur notre système central.

Nous souhaiterions que ces scripts cronés entre 2:00:00 et 3:00:00 soient tout simplement ignorés. Par exemple, nous avons un process qui tourne toutes les 15 minutes, nous voudrions que lors d'un changement d'heure d'été, il tourne à 1:20:00, puis 1:35:00, 1:50:00 et 3:05:00 (donc bien tous les quarts d'heure). Ce 25 mars 2007, il a tourné 4 fois simultanément à 3:00:00, puis de nouveau à 03:05:00...

Connaissez vous une option à insérer en crontab pour permettre d'ignorer ces process lors d'un changement d'heure ?

Je m'excuse, mais il m'est totalement impossible de copier notre crontab sur un forum public, ce qui aurait peut-être pu vous aider...

D'autre part, nous n'avons pas de problème pour les retours arrières (changement d'heure d'hiver), pour ceux qui pourraient s'en inquiéter...

Merci pour vos réponses !!!

5 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
12 avril 2007 à 10:47
Hi
Le problème ne se posant qu'une fois par année, le plus simple me semble de modifier la crontab la veille et de la remodifier le lendemain. Ce qui n'exclu pas une solution technique mais ...
0
Bonjour,

deux pistes :

- au début de la commande déclenchée par cron, vérifier que la commande n'est pas déjà déjà active dans un autre process. Cela peut nécessiter la création d'un fichier de verrouillage. Cela peut aussi conduire à une exécution parasite à 3h00.

- au début de la commande, vérifier que l'heure est l'une des heures normales de lancement (par exemple refuser tous les lancements entre 3h00 et 3h04 si la commande ne doit s'exécuter qu'à h+5mn, h+20mn etc comme dans votre exemple).

(je décline toute responsabilité si ces méthodes conduisent à programmer une collision)

Manu
0
JM_contreband Messages postés 3 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 17 avril 2007
16 avril 2007 à 11:44
Merci à vous pour vos réponses !

La solution que nous avons proposée était d'intervenir la veille, mais cette solution a été refusée par l'équipe d'exploitation. La solution de dubcek, qui me semble aussi la plus simple, ne convient donc pas...

La première des deux pistes proposées par Manu est déjà en partie implémentée dans notre système : a commande qui tourne teste au départ si elle n'est pas déjà en train de tourner, mais le fait qu'elle se lance simultanément a déjoué ce contrôle. En revanche, ce contrôle se fait actuellement sans création de fichier temporaire type .commande_en_cours. Peut-être que cela solidifierait le contrôle. A explorer donc !

La seconde des pistes proposée par Manu est celle que nous allons explorer la première : empêcher le lancement du script entre 3h et 3h04.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
16 avril 2007 à 13:30
Il est possible de mettre dans cron la veille la modification de la crontab pour passer le changement d'heure !! :-)
0
JM_contreband Messages postés 3 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 17 avril 2007
17 avril 2007 à 16:19
Dubcek,

Je voudrais que tu ailles plus loin lorsque tu dis :

Il est possible de mettre dans cron la veille la modification de la crontab pour passer le changement d'heure !! :-)

Comment croner aujourd'hui la modification de la crontab pour tous les changements d'heure à venir, sachant que le changement d'heure change de date tous les ans ?

S'il faut une intervention manuelle pour croner la modification de la crontab tous les ans, on reviendra à un refus de la part des exploitants...
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
18 avril 2007 à 15:53
J'ai pas de système Unix pour tester, mais sachant que le changement à lieu à 2h le dernier
dimanche d'octobre qui a 31 jours,
je tourne un cron le 25 10 à 0h15 qui lance une commande : at 0030 sunday < script_qui_modifie_cron
cette commande s'exécutera le dernier dimanche d'octobre.
A moins qu'une faille m'ait échappé.
0