← Retour à l'outil
*

Cron · Quotidien · Minuit · @daily

Cron tous les jours à minuit

Mise à jour : mai 2026

Les sauvegardes et nettoyages nocturnes utilisent souvent 0 0 * * *. Cette expression signifie minute 0, heure 0, tous les jours.

Tester l'expression quotidienne →

Vérifiez le fuseau et les prochaines dates

L'expression

0 0 * * *  /chemin/vers/commande
@daily     /chemin/vers/commande

Le premier 0 est la minute, le deuxième est l'heure. Inverser ces champs est une erreur classique quand on débute avec cron.

Changer l'heure quotidienne

  • 0 3 * * * : tous les jours à 03:00.
  • 30 6 * * * : tous les jours à 06:30.
  • 15 2 * * 1-5 : à 02:15 du lundi au vendredi.

Minuit n'est pas toujours idéal

Beaucoup de tâches partent à 00:00, ce qui peut créer un pic de charge. Choisir une heure comme 30 2 * * * répartit mieux les traitements et rend les journaux plus lisibles.

Comprendre exactement 0 0 * * *

L'expression 0 0 * * * se lit champ par champ : minute 0, heure 0, tous les jours du mois, tous les mois, tous les jours de semaine. Elle ne veut pas dire "toutes les heures" ni "toutes les minutes pendant minuit". Elle déclenche une seule fois par jour, au début de la journée selon le fuseau horaire de la machine. C'est la forme classique pour une tâche quotidienne.

Les raccourcis @daily et @midnight sont plus courts, mais ils sont moins explicites pour un lecteur qui ne connaît pas les alias cron. Dans une crontab d'équipe, 0 0 * * * est souvent préférable, car le comportement est visible immédiatement. Les alias restent pratiques pour des scripts personnels ou des fichiers très courts.

Choisir une heure nocturne plus sûre

Minuit est tentant parce que c'est le début naturel de la journée. Pourtant, c'est aussi un horaire très chargé : renouvellements, rotations de logs, backups, traitements batch et rapports se déclenchent souvent au même moment. Si votre tâche n'a pas besoin de partir exactement à 00:00, décaler à 17 1 * * *, 30 2 * * * ou 45 3 * * * peut réduire les conflits.

Le bon horaire dépend du contexte. Pour une sauvegarde, choisissez un moment où les écritures sont faibles. Pour un rapport envoyé le matin, lancez le calcul assez tôt pour absorber les lenteurs, mais pas trop tôt si les données sources arrivent après minuit. Pour une purge de sessions, évitez l'heure où les utilisateurs actifs sont les plus nombreux. Le générateur permet de comparer rapidement plusieurs horaires et de vérifier les prochaines dates.

Fuseau horaire, UTC et changement d'heure

Un cron quotidien à minuit utilise le fuseau de la machine. Sur un serveur configuré en UTC, 0 0 * * * se déclenche à minuit UTC. Pour une équipe en France, cela correspond à 01:00 en hiver et 02:00 en été. Ce décalage peut être souhaité, mais il doit être assumé. Beaucoup d'erreurs de planification viennent d'un serveur cloud en UTC alors que l'équipe raisonne en heure locale.

Les changements d'heure peuvent aussi perturber certains horaires nocturnes. Selon l'implémentation et le fuseau, une heure peut être sautée ou répétée. Minuit est généralement moins ambigu que 02:30 dans plusieurs zones européennes, mais les plateformes n'ont pas toutes le même comportement. Pour un traitement financier ou réglementaire, documentez le fuseau et testez les dates autour des changements d'heure. Si la stabilité prime sur l'heure locale, planifiez en UTC.

Rendre le job quotidien robuste

Une tâche quotidienne concentre souvent beaucoup de responsabilité : backup, clôture, facturation, génération de rapports ou nettoyage. Il faut donc prévoir les erreurs. Redirigez les logs, conservez un code de sortie fiable et envoyez une alerte si le traitement échoue. Une ligne comme 0 0 * * * /opt/app/daily.sh >> /var/log/daily.log 2>&1 donne au moins une trace exploitable.

Le script doit aussi gérer les reprises. Si le serveur était arrêté à minuit, cron ne rattrape pas forcément l'exécution manquée. Si le traitement est critique, stockez la date du dernier succès et vérifiez au lancement si une journée manque. Cette logique ne doit pas être cachée dans l'expression cron : cron déclenche, le script décide si une réparation ou un rattrapage est nécessaire.

Pour les tâches qui produisent un fichier quotidien, incluez la date dans le nom du fichier ou dans le dossier de sortie. Vous évitez ainsi d'écraser le résultat de la veille et vous simplifiez les contrôles de présence.

Comparer minuit, 02:00 et 03:30

Avant de retenir 0 0 * * *, testez aussi 0 2 * * * et 30 3 * * *. Les prochaines exécutions montrent immédiatement si l'horaire tombe dans la bonne nuit pour votre équipe. Cette vérification est utile pour les sauvegardes, les exports comptables, les purges de cache et les traitements de clôture qui doivent finir avant le début de journée.

Questions fréquentes

@midnight existe-t-il ?

Oui dans de nombreuses implémentations, avec le même sens que @daily.

Quel fuseau horaire est utilisé ?

Le fuseau de la machine qui exécute cron, sauf configuration particulière.

Comment lancer le premier du mois à minuit ?

0 0 1 * *.