====== crontab ======
{{ :dummy.png?75x75|Nom de la section}}
Programme Unix qui exécute toutes les minutes un ensemble de taches prédéterminées.

Sous Linux, le programme **cron** s'appelle **crontab**, concaténation de **c**h**ron**o **tab**le, "table de planification". Il est exécuté par **root** et permet de s'adapter à l'identité à chacun des utilisateurs.

===== - Liste la table des tâches =====

Afficher la liste des tâches pour l'utilisateur connecté

<code>
crontab -l
</code>

===== - Mots clés =====

Des mots-clé 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 tables des tâches =====

Éditer la liste des tâches pour l'utilisateur connecté

<code>
crontab -e
</code>

L'éditeur par défaut est exécuté pour éditer la table des tâches. Il est modifiable grâce à la variable d'environnement :
<code>
$ export EDITOR=nano
</code>



===== - Supprimer la tables des tâches =====

Supprimer la liste des tâches pour l'utilisateur connecté

<code>
crontab -r
</code>



===== - Remplacer la tables des tâches =====

Remplacer la liste des tâches pour l'utilisateur connecté par une nouvelle table contenu dans ''<fichier>''

<code>
crontab <fichier>
</code>



===== - Journalisation =====

La sortie standard pour une tache **cron** est l'envoi d'un mail. Pour modifier la sortie, il faut utiliser la syntaxe suivante :

<code>
mm hh jj MMM JJJ tâche  > fichier1  2> fichier2
</code>

  * ''fichier1'' contient la sortie standard
  * ''fichier2'' contient l'erreur standard

Par exemple, pour ne rien afficher :
<code>
>/dev/null 2>&1
</code>

**Afficher l'horaire de la dernière tâche exécutée** pour l'ensemble des utilisateurs :
<code>
ls -lut /etc/init.d/cron
</code>

**Extraire du journal du système** les informations concernant la table **cron** :
<code>
grep -w cron /var/log/syslog
</code>


===== - + d'infos =====

Les informations de planification sont stockées dans un fichier relatif à l'utilisateur. Par exemple :
  * ''/var/spool/cron/crontabs/<utilisateur>'' sous Debian, MX Linux
  * ''/var/spool/cron/<utilisateur>'' sous Red Hat, Fedora et Cent OS

En plus, il existe un table cron centralisée dans ''/etc/crontab''.

Pour un poste de travail ne fonctionnant pas forcément toute une journée, l'application **anacron** permet de lancer les commandes qui dû l'être lorsque l'ordinateur était éteint.

