Configuration d'une tâche Cron

Le fichier de configuration principal de cron, /etc/crontab, contient les lignes suivantes :

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Les quatre premières sont des variables servant à configurer l'environnement dans lequel les tâches cron sont exécutées. La valeur de la variable SHELL indique au système quel environnement shell il doit utiliser (dans cet exemple, bash shell), et la variable PATH définit le chemin d'accès utilisé pour l'exécution des commandes. Le résultat des tâches cron est envoyé par e-mail au nom d'utilisateur défini par la variable MAILTO. Si la variable MAILTO est une chaîne vide (MAILTO=""), aucun e-mail ne sera envoyé. La variable HOME peut être utilisée pour le paramétrage du répertoire à utiliser pour l'exécution de commandes ou de scripts.

Chacune des lignes du fichier /etc/crontab a le format :

minute   hour   day   month   dayofweek   command

Pour les valeurs ci-dessus, un astérisque (*) peut être utilisé pour indiquer toutes les valeurs valides. Par exemple, un astérisque utilisé pour la valeur du mois signifie une exécution de la commande tous les mois (avec respect des restrictions des autres valeurs).

Un trait d'union (-) placé entre deux nombres entiers indique une gamme de nombres entiers. Par exemple, 1-4 correspond aux nombres entiers 1, 2, 3 et 4.

Une liste de valeurs séparées par des virgules (,) correspond à une liste. Par exemple, 3, 4, 6, 8 correspond à ces quatre nombres entiers spécifiques.

La barre oblique (/) peut être utilisée pour spécifier des valeurs échelonnées. Pour passer un nombre entier dans une gamme, faites-la suivre de /<nombre entier>. Par exemple, 0-59/2 permet de définir une minute sur deux dans le champ des minutes. Ces valeurs échelonnées peuvent également être utilisées avec un astérisque. Par exemple, la valeur */3 peut être utilisée dans le champ des mois pour passer un mois sur trois.

Les lignes commençant par un signe dièse (#) correspondent à des commentaires et ne sont pas traitées.

Exemple 22-1. Exemples de crontabs

# record the memory usage of the system every monday 
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh

Comme vous pouvez le voir dans le fichier /etc/crontab, le script run-parts est utilisé pour l'exécution des scripts dans les fichiers /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly (toutes les heures, tous les jours, toutes les semaines ou tous les mois, respectivement). Les fichiers de ces répertoires doivent être des scripts de commandes en langage natif.

Si une tâche cron doit être exécutée en suivant un planning ne correspondant ni à toutes les heures, ni à tous les jours, ni à toutes les semaines, ni à tous les mois, il est possible de l'ajouter au répertoire /etc/cron.d. Tous les fichiers de ce répertoire utilisent la même syntaxe que /etc/crontab.

Le démon cron vérifie le fichier etc/crontab, le répertoire etc/cron.d/ et le répertoire /var/spool/cron toutes les minutes pour détecter les changements éventuels. S'il trouve des changements, ceux-ci sont chargés dans la mémoire. Ainsi, le démon n'a pas besoin d'être redémarré si un fichier crontab est modifié.

Les utilisateurs autres que l'utilisateur de base peuvent configurer des tâches cron à l'aide de l'utilitaire crontab. Tous les crontabs définis par l'utilisateur sont stockés dans le répertoire /var/spool/cron et exécutés avec les noms d'utilisateur des utilisateurs qui les ont créés. Pour créer un crontab en tant qu'utilisateur, connectez-vous en tant que l'utilisateur voulu et tapez la commande crontab -e pour éditer le crontab utilisateur à l'aide de l'éditeur déterminé par la variable d'environnement VISUAL ou EDITOR. Le fichier utilise le même format que /etc/crontab. Lorsque les modifications sur le crontab sont enregistrées, le crontab est stocké avec le nom d'utilisateur et inséré dans le fichier /var/spool/cron/nom d'utilisateur.

Lancement et interruption du service

Pour lancer le service cron, utilisez la commande /sbin/service crond start. Pour interrompre le service, utilisez la commande /sbin/service crond stop. Nous vous recommandons de lancez le service au démarrage. Reportez-vous au Chapitre 8 pour en savoir plus sur le lancement automatique du service cron au démarrage.