La commande crontab
permet de lancer des commandes à intervalles réguliers ou à certaines dates. Pour l'utiliser, il faut lancer la commande crontab
avec l'option -e. L'éditeur par défaut est alors appellé9.2 (vi). Il ne reste plus qu'à entrer les différents champs, dans un ordre particulier :
Quitter ensuite l'éditeur (<Echap>:wq<Enter>
, pour vi), et vérifier éventuellement la saisie avec la commande crontab -l
.
Voici quelque exemples sur la commande find
, qui nettoie le répertoire /tmp
des vieux fichiers :
0 1 1 * * find /tmp -atime 3 -exec rm -f {} \;
0 1 * * mon find /tmp -atime 3 -exec rm -f {} \;
0 1 1,15 * * find /tmp -atime 3 -exec rm -f {} \;
0 1 1-15 * * find /tmp -atime 3 -exec rm -f {} \;
0 1 */5 * * find /tmp -atime 3 -exec rm -f {} \;
L'exemple qui suit sert à vérifier tous les deux jours qu'aucun courrier n'est en attente dans la queue, et envoie un message à l'administratrur du courrier :
0 6 */2 * * mailq -v | mail -s "Messages bloques" postmaster
Pour ne pas recevoir de message à chaque action de crontab
, et pour que tous ces messages soient redirigés vers un fichier (y compris la sortie d'erreur), entrer la commande suivante :
0 1 * * * find /tmp -atime 3 -exec rm -f {} \; >> $HOME/log 2&1
Les variable d'environnement $USER, $HOME, et $SHELL sont reconnues par cron
(le programme qui lance le démon crontab
). Bien entendu, un script peut être lancé à la place d'une commande (pour une commande ou une suite de commande difficile à faire tenir en une seule ligne).
La crontab est très utile si on utilise UUCP (pour envoyer du courrier, récupérer les news...). N'importe quel utilisateur peut se créer une crontab grâce à la commande crontab
.