Guides Cron
Guides

Cron et les fuseaux horaires : tout comprendre

UTC du serveur vs heure locale, définition de TZ

Une expression cron ne contient en elle-même aucune information de fuseau horaire. L'heure indiquée par l'expression suit le fuseau horaire du système sur lequel cron fonctionne. Ainsi, une même expression 0 9 * * * s'exécutera à une heure réelle différente selon le fuseau horaire du serveur.

De nombreux serveurs et conteneurs ont par défaut le fuseau horaire UTC. La Corée (KST) étant à UTC+9, si vous programmez 0 0 * * * (minuit) sur un serveur en UTC, l'exécution aura en réalité lieu à 9 h heure de Corée. Il est très fréquent de programmer en pensant à l'heure locale et de se retrouver décalé de 9 heures.

Certaines implémentations de cron permettent de placer en haut du crontab une ligne comme CRON_TZ=Asia/Seoul pour interpréter les expressions dans un fuseau horaire précis. En environnement conteneurisé, on ajuste aussi la variable d'environnement TZ de l'image ou /etc/localtime sur la région voulue. La prise en charge varie toutefois selon les implémentations, il faut donc vérifier.

Dans les régions soumises à l'heure d'été (DST), certaines heures peuvent être sautées ou apparaître deux fois le jour où l'horloge est avancée ou reculée, si bien que les tâches programmées à ces moments-là peuvent être manquées ou exécutées en double. Pour les tâches importantes, programmer en UTC permet d'éviter ce genre de problème.

Astuce pratique : raisonnez vos expressions en UTC et vérifiez impérativement le fuseau horaire réel de votre environnement de déploiement. À noter que les prochaines exécutions affichées par l'outil de ce site sont basées sur le fuseau horaire local de votre navigateur ; comparez-les donc au fuseau horaire du serveur à titre de référence.

Ressources

Recueil de plannings

Des recettes à copier et utiliser directement

Aide-mémoire de syntaxe

Les 5 champs et les caractères spéciaux en un coup d'œil

Macros et alias

Des expressions abrégées comme @daily

Guides

Des guides pratiques pour bien comprendre cron et éviter les erreurs