Cron

Le démon crond est le processus qui permet d’exécuter des tâches planifiées automatiquement à des instants précis prévus à l’avance (date,
heure, minute) et en gérant une chronicité.
Si par exemple je veux qu’une machine PC-560 s’éteigne tous les jours à 20h51, je peux le faire avec cron. Pour cela, il me faut une entrée
dans la crontab de la machine qui indiquera la commande à exécuter pour éteindre la machine.
Normalement, cron est installé par défaut sur les systèmes, sinon vous pouvez l’installer comme d’habitude.
Toutes les configurations exécutées par cron vont se retrouver dans la table de cron (crontab). Seul la syntaxe particulière est complexe à
utiliser.

Utilisation de la crontab

Pour paramétrer une tâche planifiée, il faut écrire une entrée dans la crontab. Cette entrée spécifie la (ou les) date d’exécution de cette tâche,
ainsi que la tâche à exécuter et d’autres paramètres si nécessaire.
Pour chaque utilisateur du système, on peut éditer un fichier de crontab, relatif aux tâches planifiées de ce dernier. Ces fichiers se trouvent en
général dans “/var/spool/cron/crontabs/” ou un équivalent et portent le nom de l’utilisateur en question.
L’édition du fichier ne se fait pas en direct dans le spool, on utilisera une commande dédié pour ça :
- crontab -e pour éditer le fichier de crontab de l’utilisateur courant
- crontab -e -u root pour éditer la crontab d’un utilisateur spécifique (root)
- crontab -l pour afficher la crontab de l’utilisateur courant.
- crontab -r qui va effacer la crontab de l’utilisateur
En général au premier lancement, le système vous demandera quel moteur de texte vous souhaitez utiliser (nano, vi, ...) en fonction de ceux
installé. En sortie du fichier, le système vérifiera que la syntaxe de vos entrées est correct.

Il est important de noter, que le système dispose, en plus du crontab utilisateurs, de ses propres fichiers et tâches planifiées dans les
répertoires “/etc/cron.*” l’étoile représente les différents dossiers utilisés (qui sont référencés dans /etc/crontab) :
- cron.hourly toutes les heures
- cron.daily tous les jours
- cron.weekly toutes les semaines
- cron.monthly tous les mois
- cron.d contient des fichiers au format crontab pour des utilisations plus spécifiques.

Syntaxe de cron

Chaque entrée dans la crontab correspond à une tâche à exécuter. Et chaque entrée de la crontab est une ligne dans un des fichiers cités plus
haut. Si nous regardons une ligne en détail :
Exemple :
51 19 * * 0 root /usr/local/bin/backupbackup
Cette ligne signifie de lancer le programme /usr/local/bin/backupbackup tous les dimanches à 19h51.
La syntaxe générale d’écrit sous cette forme :
mm hh jj MMM JDS commande
mm : Codé sur 2 chiffres représente les minutes de 0 à 59, ou * pour décrire toutes les minutes
hh : Codé sur 2 chiffres représente les heures de 0 à 23, ou * pour décrire toutes les heures
jj : Codé sur 2 chiffres représente la date du jour de 1 à 31, * pour décrire tous les jours
MMM : Codé sur 2 chiffres ou 3 lettres représente le mois de 1 à 12 ou de jan à dec, * pour décrire tous les mois
JDS : représente le jour de la semaine codé par 1 chiffre ou 3 lettres (de 0 à 7 ou de sun à sun, le 0 et le 7 représente sunday)

commande : la commande qui sera exécutée.
On peut trouver des caractères spéciaux dans les champs prévus pour :
- * : signifie tout ou chaque unité de temps.
- , : permet de décrire une liste. Exemple 3,5,17
- - : permet de décrire un intervalle. Exemple de 1 à 10 se note 1-10
- */ : permet de décrire un intervalle avec des pas différents de 1. Par exemple : */10 signifie 0,10,20,30, ...
- @reboot : permet de lancer la commande au démarrage de la machine
- @yearly : tous les ans
- @daily : tous les jours
Vous pouvez également vous renseigner sur anacron, pour que les tâches soient exécutées même si la machine est éteinte (ou au moins au
redémarrage de celle-ci).