# crontab **cron** est un démon Unix qui exécute, chaque minute, les tâches planifiées par les utilisateurs. La commande **crontab** (contraction de *chrono table*, « table de planification ») permet de consulter et modifier ces tâches. Chaque utilisateur dispose de sa propre table ; le démon `cron`, lancé par **root**, exécute chaque tâche sous l'identité de son propriétaire. ## Format d'une ligne Chaque ligne d'une crontab suit le format suivant : ``` mm hh jj MMM JJJ commande ``` | Champ | Plage | Description | | ----- | ----- | ----------- | | `mm` | 0–59 | Minute | | `hh` | 0–23 | Heure | | `jj` | 1–31 | Jour du mois | | `MMM` | 1–12 | Mois | | `JJJ` | 0–6 | Jour de la semaine (0 = dimanche) | ## Lister les tâches Afficher la table de l'utilisateur connecté : ``` crontab -l ``` ## Mots-clés Plusieurs mots-clés peuvent remplacer le code horaire : | Mot-clé | Description | Équivalent | | ------- | ----------- | ---------- | | `@reboot` | Au démarrage | (aucun) | | `@yearly` | Tous les ans | `0 0 1 1 *` | | `@annually` | Tous les ans | `0 0 1 1 *` | | `@monthly` | Tous les mois | `0 0 1 * *` | | `@weekly` | Toutes les semaines | `0 0 * * 0` | | `@daily` | Tous les jours | `0 0 * * *` | | `@midnight` | Toutes les nuits | `0 0 * * *` | | `@hourly` | Toutes les heures | `0 * * * *` | ## Éditer la table Ouvrir la crontab de l'utilisateur connecté dans l'éditeur par défaut : ``` crontab -e ``` L'éditeur utilisé peut être modifié via la variable d'environnement `EDITOR` : ``` $ export EDITOR=nano ``` ## Supprimer la table ``` crontab -r ``` ## Remplacer la table Remplacer la table courante par le contenu d'un fichier : ``` crontab ``` ## Rediriger les sorties Par défaut, la sortie standard d'une tâche `cron` est envoyée par mail à son propriétaire. Pour la rediriger, on utilise la syntaxe shell habituelle : ``` mm hh jj MMM JJJ tâche > fichier1 2> fichier2 ``` - `fichier1` reçoit la sortie standard - `fichier2` reçoit l'erreur standard Pour ignorer toute sortie : ``` >/dev/null 2>&1 ``` ## Inspecter l'activité Afficher la date du dernier accès au script de `cron` (indicateur approximatif d'activité) : ``` ls -lut /etc/init.d/cron ``` Extraire les lignes relatives à `cron` dans le journal système : ``` grep -w cron /var/log/syslog ``` ## Pour aller plus loin Les tables sont stockées dans un fichier propre à chaque utilisateur : - `/var/spool/cron/crontabs/` sous Debian, MX Linux - `/var/spool/cron/` sous Red Hat, Fedora et CentOS Une table système centralisée existe également dans `/etc/crontab`. Pour les postes qui ne restent pas allumés en permanence, l'utilitaire **anacron** prend le relais : il exécute, au démarrage, les tâches qui auraient dû tourner pendant que la machine était éteinte.