01Lire une expression cron
Une ligne crontab compte cinq champs, de gauche à droite : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12) et jour de semaine (0-7, dimanche = 0 ou 7). Chaque champ accepte une valeur, une liste (1,15), une plage (8-18), un pas (*/5) ou l'étoile « toutes les valeurs ». */15 8-18 * * 1-5 se lit donc : toutes les 15 minutes, de 8 h à 18 h, du lundi au vendredi.
Le calcul des prochaines exécutions se fait dans votre navigateur, dans votre fuseau — attention : le serveur qui exécutera la tâche a peut-être un fuseau différent (les serveurs sont souvent en UTC). Un 0 9 * * * sur un serveur UTC sonne à 10 h ou 11 h heure de Paris selon la saison.
02La syntaxe en détail
- *
- Toutes les valeurs du champ. * dans minute = chaque minute.
- a-b
- Une plage inclusive : 8-18 dans heure = de 8 h à 18 h. 1-5 dans jour de semaine = du lundi au vendredi.
- */n
- Un pas : */5 dans minute = toutes les 5 minutes (0, 5, 10…). Fonctionne aussi sur une plage : 8-18/2.
- a,b,c
- Une liste : 0,30 dans minute = à la minute 0 et 30. Combinable avec plages et pas.
- Noms
- Mois et jours acceptent trois lettres anglaises : jan-dec, sun-sat. 0 9 * * mon-fri est équivalent à 0 9 * * 1-5.
- @alias
- @hourly (0 * * * *), @daily (0 0 * * *), @weekly (0 0 * * 0), @monthly (0 0 1 * *), @yearly (0 0 1 1 *), @reboot (au démarrage, non planifiable).
03Les pièges classiques
Le plus vicieux : quand jour du mois et jour de semaine sont tous deux précisés, cron exécute si l'un OU l'autre correspond — 0 0 13 * 5 tourne le 13 de chaque mois ET tous les vendredis, pas seulement les vendredis 13. Autre grand classique : croire que */60 ou une minute * avec une heure précise fait « une fois » : * 9 * * * s'exécute 60 fois, chaque minute de 9 h à 9 h 59.
Pensez aussi au fuseau du serveur (souvent UTC), aux nuits de changement d'heure (une tâche à 2 h 30 peut sauter ou doubler), et à l'environnement minimal de cron : pas votre PATH ni vos variables shell — la cause n°1 des « ça marche dans mon terminal mais pas en cron ». Pour planifier côté Cloudflare Workers, les Cron Triggers utilisent cette même syntaxe, toujours en UTC.
04Questions fréquentes
Pourquoi ma tâche cron tourne-t-elle à la mauvaise heure ?
Dans 9 cas sur 10 : le fuseau. Cette page calcule dans le fuseau de votre navigateur, mais le démon cron utilise celui du serveur — très souvent UTC sur les machines cloud. Vérifiez avec la commande date sur le serveur, et décalez l'expression en conséquence (ou définissez CRON_TZ / TZ quand votre cron le supporte).
Comment exécuter une tâche toutes les 30 secondes ?
Cron ne descend pas sous la minute. Les contournements classiques : deux lignes identiques dont une préfixée de sleep 30, une boucle dans le script lui-même, ou un timer systemd (OnUnitActiveSec=30s) qui est l'outil prévu pour ça sur les systèmes modernes.
Que signifie 0 0 13 * 5 exactement ?
Minuit, le 13 de chaque mois OU chaque vendredi — pas « les vendredis 13 ». Quand jour du mois et jour de semaine sont tous deux restreints, la norme historique (vixie-cron) applique un OU logique. Pour viser réellement les vendredis 13, il faut tester le jour dans le script : cron lance le 13, le script vérifie que c'est un vendredi.
Mon script marche à la main mais pas via cron. Pourquoi ?
Cron lance les tâches dans un environnement minimal : PATH réduit (souvent /usr/bin:/bin), pas de variables de votre .bashrc, pas de terminal. Utilisez des chemins absolus (/usr/local/bin/python3 plutôt que python3), définissez les variables nécessaires en tête de crontab, et redirigez la sortie vers un fichier de log pour voir l'erreur réelle.
05Autres outils
Dev & encodage
Décodeur JWTDécoder un jeton JWT et vérifier sa signature, sans rien envoyer Timestamp UnixConvertir un timestamp epoch en date et inversement, en direct Base64Encoder et décoder du Base64 (UTF-8, URL-safe), sans rien envoyer Empreintes MD5/SHACalculer le hash d'un texte ou d'un fichier (MD5, SHA-256…), en local Générateur UUIDGénérer des UUID v4 aléatoires ou v7 ordonnés par le tempsMon IP & réseau — BGP / RPKI · Sous-réseau · Test de port
DNS & domaines — Test DNS · Propagation DNS · Whois · Punycode / IDN
Email — Score email · Test email · En-têtes d'email · Liste noire · Générateur DMARC · Clé DKIM
Web & SEO — Audit de page · En-têtes HTTP · En-têtes sécurité · Aperçu de partage · Test robots.txt · Certificats TLS · Redirections · Site en panne ? · User-Agent
Confidentialité & mots de passe — Fuite WebRTC · Mots de passe · Fuite de mot de passe