Lorsque l'on administre un serveur on est souvent amené à mettre en place des tâches récurrentes. Sur linux la mise en place de ces tâches peut se faire gràce à l'utilisation de cron
et de la commande crontab
.
Utilisation de crontab
Pour éditer les tâches récurrente de l'utilisateur courant il suffit de taper la commande crontab -e
. Cette commande va alors ouvrir le fichier de tâche avec l'éditeur de votre choix. La structure d'une tâche suivra toujours ce motif :
# Minute Heure Jour du mois Mois Jour de la semaine
0 2 * * * ~/tache_a_executer
Il est possible d'utiliser des intervalles ou des palliers :
# La tâche s'éxécutera toutes les heures entre minuit et 12h
0 0-12 * * * ~/tache_a_executer
# La tâche s'éxécutera toutes les 2 heures entre minuit et 12h
0 0-12/2 * * * ~/tache_a_executer
Attention en revanche si le pallier n'est pas constant dans l'intervalle, par exemple 1-6/2
représentera 1, 3, 5, 1, 3... et aucune tâche ne sera éxécutée pour le nombre 6.
Attention au PATH
Une autre mise en garde concerne l'environnement qui est utilisé lors de l'éxécution des tâches cron. Ces tâches sont éxécutées avec le shell sh et le PATH ne contient que 2 entrées. Vous pouvez redéfinir cela en redéfinissant les variables d'environnement avant vos tâches.
SHELL=/bin/bash
PATH=/home/jonathan/bin:/usr/local/bin:/usr/bin
MAILTO=support@server.com
0 0-12/2 * * * ~/tache_a_executer
Le MAILTO
permet d'indiquer l'email qui recevra la sortie des commandes.
En mode root
Si vous êtes administrateur vous avez quelques options en plus et vous pouvez notamment éditer les fichiers cron de vos utilisateurs à l'aide du drapeau -u
.
# J'édite le fichier cron de mon utilisateur "demo"
crontab -u demo -e
Vous pouvez aussi contrôler qui a accès à l'utilisation des tâches cron à l'aide de fichiers /etc/cron.allow
ou /etc/cron.deny
qui permettent respectivement de lister les utilisateur ayant accès aux tâches récurrentes et ceux qui n'y ont pas accès.