Pourquoi les cronjobs fonctionnent-ils au mauvais moment?

10

J'ai une configuration cronjobs à exécuter quotidiennement sur mon serveur Ubuntu.

par exemple. 0 4 * * * commande

Ils courent sauf qu'ils courent 8 heures plus tôt. Lors de la configuration du serveur, il était initialement défini sur l'heure UTC. J'ai couru sudo dpkg-reconfigure tzdatapour régler le serveur sur CST, soit 6 heures de retard sur UTC. Fait intéressant, je suis en PST, avec 8 heures de retard sur UTC, mais je ne vois pas comment le serveur pourrait le savoir.

Si j'exécute la commande date, elle indique l'heure en CST.

Il doit y avoir un endroit où l'heure est mal configurée. Où puis-je chercher à résoudre ce problème?

Matt McCormick
la source

Réponses:

21

Avez-vous pensé à redémarrer cron après avoir changé de fuseau horaire? Sinon, cron peut toujours avoir sa vieille notion du fuseau horaire à partir du moment où il a été initialement démarré.

Bien que ce ne soit pas strictement nécessaire, je suggère généralement de redémarrer une machine après avoir changé le fuseau horaire - Le fuseau horaire d'un serveur ne devrait jamais changer (ou du moins il devrait être TRÈS rare), et cela garantit que chaque programme sur le serveur a été redémarré et connaît le changement :-)

voretaq7
la source
Non, je n'ai pas redémarré. Je l'ai fait et j'attendrai de voir si c'est le problème (ce qui, je pense, peut l'être).
Matt McCormick
Après le redémarrage du service cron, il est maintenant exécuté au même moment avec le fuseau horaire que j'ai défini à l'aide de tzdata. Merci.
Donny Kurnia
1
J'ai remarqué que les entrées dans / var / log / cron montraient le mauvais moment même après le redémarrage de crond. Le redémarrage de rsyslog a résolu ce problème.
zymhan
@WildVelociraptor Ouais syslog utilisera également les anciennes données de fuseau horaire jusqu'au redémarrage (donc cela va horodater les choses mal même si elles s'exécutent au bon moment). Tout autre élément de longue durée et démarré avant la modification des données de fuseau horaire présentera un comportement similaire, c'est pourquoi un redémarrage est généralement indiqué.
voretaq7
6

Pour moi, j'ai constaté que lorsque j'exécutais la hwclockcommande, l'heure était différente d'une heure que lorsque j'exécutais la datecommande. Pour résoudre ce problème, vous pouvez appeler hwclock --systohcqui synchronisera les deux fois et exécutera les tâches cron au moment prévu.

ajon
la source
Dans mon cas , à la fois dateet un hwclockrapport temps identique, mais Cron ne fait pas toujours ce que je pense à.
unfa