Cron
| Fiche express | |
|---|---|
| Domaine | Planification de tâches (démon) |
| Démon | crond / cron
|
| Paquet | cronie (RHEL/CentOS) ou cron (Debian/Ubuntu)
|
| Fichiers surveillés | /etc/crontab · /etc/cron.d/ · /var/spool/cron/
|
| Voir aussi | Crontab (syntaxe 5 champs) · Systemd (timers, alternative moderne) |
cron désigne à la fois le démon (crond sous RHEL/CentOS, cron sous Debian/Ubuntu) et, plus largement, l'écosystème de fichiers qu'il lit pour savoir quoi exécuter et quand. Cette page traite du démon et de son environnement de fichiers ; pour la syntaxe des 5 champs et la commande crontab elle-même, voir Crontab.
Le démon
Au démarrage, le démon cron lit l'ensemble de ses sources de tâches, calcule les prochaines échéances, puis reste en veille jusqu'à la minute suivante pour vérifier à nouveau — la granularité de cron est la minute, il ne peut pas planifier à la seconde près.
systemctl status crond # RHEL/CentOS
systemctl status cron # Debian/Ubuntu
journalctl -u crond # journaux du démon
Sur les distributions basées sur systemd, crond reste un démon traditionnel (pas une unité native systemd de type timer) : il est simplement supervisé comme n'importe quel service via systemctl.
Sources lues par le démon
Le démon agrège plusieurs sources, chacune avec un format légèrement différent :
/etc/crontab— crontab système historique, avec un champ utilisateur supplémentaire par rapport aux crontabs individuels. C'est généralement lui qui déclencherun-partssur les répertoires/etc/cron.{hourly,daily,weekly,monthly}./etc/cron.d/— répertoire de fichiers crontab système indépendants (un par paquet ou par usage), même format que/etc/crontab(avec champ utilisateur). Pratique pour livrer une tâche avec un paquet ou un déploiement sans toucher au crontab système global./var/spool/cron/(ou/var/spool/cron/crontabs/selon la distribution) — un fichier par utilisateur, généré et géré exclusivement parcrontab -e. Format sans champ utilisateur puisque le fichier appartient déjà à un utilisateur donné.
cat /etc/crontab
ls /etc/cron.d/
ls /var/spool/cron/ # ou /var/spool/cron/crontabs/
Le démon surveille ces emplacements (notification du système de fichiers ou re-scan périodique selon l'implémentation) et recharge automatiquement dès qu'un fichier est ajouté ou modifié — aucun redémarrage n'est nécessaire dans l'usage courant.
anacron : rattraper les tâches manquées
cron part du principe que la machine tourne en permanence : si elle est éteinte au moment où une tâche aurait dû s'exécuter, l'occurrence est simplement perdue. anacron comble ce manque pour les machines qui ne tournent pas 24/7 (postes de travail, serveurs éteints la nuit) : il compare la date de dernière exécution d'une tâche (stockée dans /var/spool/anacron/) à la date du jour, et rattrape les tâches en retard au prochain démarrage.
cat /etc/anacrontab
# période(jours) délai(minutes) identifiant commande
1 5 cron.daily run-parts /etc/cron.daily
7 25 cron.weekly run-parts /etc/cron.weekly
@monthly 45 cron.monthly run-parts /etc/cron.monthly
anacron ne remplace pas cron : il ne gère qu'une granularité journalière ou plus large (pas d'heure précise, juste un délai après le démarrage), et sert typiquement de filet de sécurité pour les répertoires cron.{daily,weekly,monthly}. L'articulation exacte entre cron et anacron sur ces répertoires (lequel des deux déclenche run-parts en premier) varie selon la distribution — à vérifier au cas par cas.
Contrôle d'accès
cat /etc/cron.allow # si présent, liste blanche exclusive des utilisateurs autorisés
cat /etc/cron.deny # sinon, liste noire des utilisateurs interdits
Si aucun des deux fichiers n'existe, le comportement par défaut dépend de la distribution (souvent : tout le monde autorisé) — à vérifier selon le paquet installé.