Cron · Hebdomadaire · Chaque semaine · @weekly
Expression cron chaque semaine
Mise à jour : mai 2026
Pour planifier une tâche une fois par semaine, le champ décisif est le dernier : le jour de la semaine. C'est lui qui transforme une crontab quotidienne en cron hebdomadaire précis.
Aperçu des prochaines dates · Calcul local
Les expressions utiles
| Besoin | Expression | Lecture |
|---|---|---|
| Chaque lundi à 09:00 | 0 9 * * 1 | Lundi = 1 |
| Chaque dimanche à minuit | 0 0 * * 0 | Dimanche = 0 ou 7 |
| Chaque vendredi à 18:00 | 0 18 * * 5 | Vendredi = 5 |
| Raccourci hebdomadaire | @weekly | Souvent dimanche 00:00 |
Éviter le piège du jour du mois
Pour une exécution chaque semaine, gardez le champ jour du mois à *. L'expression 0 9 1 * 1 ne signifie pas "le premier lundi" : en cron Unix, elle lance la tâche le 1er du mois et chaque lundi.
La forme la plus lisible reste donc minute heure * * jour_semaine. Exemple : 30 7 * * 1 pour chaque lundi à 07:30.
Mots-clés et cas réels
- backup hebdomadaire Linux :
0 2 * * 0 /usr/local/bin/backup.sh - rapport du lundi matin :
0 8 * * 1 /app/send-report - nettoyage du vendredi soir :
0 19 * * 5 /app/cleanup - générateur cron hebdomadaire : vérification des prochaines dates avant mise en production.
Choisir le bon jour de semaine
Le meilleur cron hebdomadaire n'est pas toujours celui qui utilise @weekly. Ce raccourci est pratique, mais il cache le jour et l'heure réels. Dans beaucoup d'environnements Unix, @weekly revient à 0 0 * * 0, donc dimanche à 00:00. Pour une tâche métier, c'est rarement assez explicite. Un rapport envoyé au début de la semaine devrait plutôt être écrit 0 8 * * 1. Une purge de logs peut être placée le dimanche à 02:00 avec 0 2 * * 0. Une synchronisation hebdomadaire avec un CRM peut partir le vendredi soir, après les imports du jour, avec 0 19 * * 5.
Écrire le jour en chiffre rend la crontab portable. Écrire MON, FRI ou SUN peut être plus lisible, mais certains parseurs stricts ou certaines plateformes cloud n'ont pas exactement les mêmes règles. Si vous maintenez une crontab Linux classique, les deux styles sont généralement acceptés. Si vous copiez l'expression dans Kubernetes, GitHub Actions, GitLab CI, Jenkins, Spring ou AWS EventBridge, vérifiez toujours la variante de cron utilisée.
Hebdomadaire ne veut pas dire tous les 7 jours glissants
Une expression cron hebdomadaire se cale sur le calendrier, pas sur un délai mesuré depuis la dernière exécution. 0 9 * * 1 signifie "chaque lundi à 09:00", même si l'exécution précédente a échoué ou si la machine était arrêtée. Cron ne rattrape pas automatiquement une tâche manquée, sauf si un outil complémentaire comme anacron, systemd timer ou un ordonnanceur applicatif le gère.
C'est important pour les sauvegardes et les exports de données. Si vous avez besoin d'une vraie garantie "une fois tous les sept jours", même après arrêt serveur, cron seul n'est pas suffisant. Utilisez cron pour déclencher le script, puis stockez une date de dernière exécution dans une base, un fichier de verrou ou un journal. Le script peut alors décider s'il doit vraiment lancer le traitement. Pour une simple tâche de routine, en revanche, une expression hebdomadaire explicite reste la solution la plus simple et la plus robuste.
Fuseau horaire et changement d'heure
Le cron hebdomadaire s'exécute dans le fuseau horaire de la machine qui héberge le service cron. Sur un serveur en UTC, 0 9 * * 1 veut dire lundi 09:00 UTC, pas 09:00 Europe/Paris. En hiver, cela correspond à 10:00 à Paris ; en été, à 11:00. Si votre besoin est lié à une équipe française, confirmez le fuseau du serveur avec date, la configuration système ou la plateforme d'hébergement.
Les changements d'heure ajoutent un autre détail. Une tâche à 02:30 peut être sautée ou doublée selon la nuit de transition et l'implémentation cron. Pour une tâche hebdomadaire critique, choisissez une heure moins ambiguë, par exemple 04:15 locale ou une heure UTC stable. Si le résultat doit arriver à une heure locale précise, documentez ce choix dans la crontab ou dans le script.
Vérifier avant de coller en production
Avant d'ajouter une expression hebdomadaire à crontab -e, vérifiez trois choses : le jour choisi, le fuseau horaire et la commande. Le générateur affiche les prochaines exécutions, ce qui permet de voir immédiatement si une tâche censée partir lundi part en réalité dimanche. Ajoutez ensuite une commande complète avec chemins absolus, car l'environnement cron est souvent plus minimal que votre terminal interactif.
Une ligne crontab de production ressemble donc à 0 8 * * 1 /usr/local/bin/report.sh >> /var/log/report.log 2>&1. La redirection vers un fichier de log évite de perdre les erreurs. Pour les scripts sensibles, ajoutez un verrou afin d'empêcher deux exécutions simultanées si un traitement dure plus longtemps que prévu. Une bonne expression cron hebdomadaire est courte, mais son contexte d'exécution doit être explicite.
Questions fréquentes
Le lundi vaut 0 ou 1 ?
En cron Unix, dimanche vaut 0 ou 7, lundi vaut 1, mardi vaut 2, jusqu'à samedi qui vaut 6.
Puis-je écrire MON au lieu de 1 ?
Oui sur beaucoup d'implémentations : 0 9 * * MON est généralement équivalent à 0 9 * * 1.
@weekly lance-t-il le lundi ?
Non dans la plupart des cron : @weekly correspond à dimanche à minuit. Écrivez explicitement 0 9 * * 1 pour le lundi.