PRESSE > LINUX
Planifiez
vos tâches sous Linux avec CRON
 |
|
Cet
article a été publié dans le magazine
LINUX-PRATIQUE n°7,
mi-février 2000.
C'est
moi qui l'ai fait ! 
|
Vous
connaissez certainement le "Planificateur de tâches" sous Windows
98 qui vous permet d'exécuter automatiquement des programmes ou
des fichiers à des dates prédéfinies.
Ceci n'est pas nouveau sous Linux. Toutes les distibutions actuelles
possèdent " cron ", l'utilitaire qui va effectuer les actions que
vous lui avez ordonné selon l'heure, le jour et le mois.
Ainsi, vous pourrez par exemple purger certains répertoires ou effectuer
des copies de sauvegarde de fichiers de façon régulière et automatique.
C'EST QUOI CRON ?
CRON est en fait un terme générique qui représente trois éléments
:
- Le démon " crond " ou " cron ".
Ce démon est un programme lancé automatiquement au démarrage de
Linux. Il fonctionne continuellement en tâche de fond et vérifie
toutes les minutes dans les "cron tables" si une commande doit être
exécutée.
- Les fichiers " cron tables "
Ce sont des fichiers contenant les commandes planifiées par les
utilisateurs et qui doivent être lancées à intervalles réguliers.
Il s'agit simplement de fichiers texte que vous pouvez visualiser
avec votre éditeur favori, comme par exemple kwrite.
Les " cron tables " sont chargées en mémoire par le démon " crond
" et se trouvent dans le répertoire /var/spool/cron. Il en existe
une par utilisateur. Par exemple, pour l'utilisateur " toto " vous
trouverez le fichier /var/spool/cron/toto. En revanche, n'éditez
jamais ce fichier directement. Vous devez passer par l'utilitaire
" crontab " pour que le système prenne en compte les modifications.
- La commande " crontab "
Placée dans le répertoire /usr/bin, elle permet plusieurs actions
en fonction des paramètres qui suivent cette commande. Voici les
principales utilisations :
* crontab -e (e comme edit) C'est l'action la plus utilisée.
Elle ouvre l'éditeur de texte par défaut : vi (prononcer vi-aille)
et votre " cron table " si elle existe, sinon elle sera créée lorsque
vous enregistrerez le fichier. Nous verrons plus loin comment éditer
ce fichier avec la syntaxe qui convient.
* crontab -l (l pour list) Cette commande affiche simplement
votre table dans le terminal. " no crontab for toto " vous sera
retourné si elle n'existe pas (et si vous vous appelez " toto ").
* crontab -r (r pour remove) Tapez ceci pour supprimer votre
table.
* crontab -u utilisateur (u pour user) Pour éditer la table
d'un autre utilisateur, remplacez " utilisateur " par le nom de
celui-ci.
DROITS D'UTILISATION
Vous pouvez autoriser ou refuser l'édition d'une " cron table "
aux utilisateurs de votre machine. Si un fichier /etc/cron.allow
existe alors seuls les utilisateurs listés dans ce fichier pourront
utiliser la commande " crontab ".
En revanche si le fichier /etc/cron.deny existe et que /etc/cron.allow
n'existe pas, les utilisateurs inscrits dans /etc/cron.deny ne pourront
pas utiliser la commande " crontab ". Si aucun des deux fichiers
n'existe tous les utilisateurs de la machine pourront utiliser "
Cron ". Pour créer les fichiers " cron.allow " ou " cron.deny ",
loguez vous en root, lancez votre éditeur de texte préféré et saisissez
un utilisateur par ligne. Enregistrez ensuite le fichier dans /etc
sous le nom " cron.allow " ou " cron.deny ".
SYNTAXE DE CRON
Avant de nous lancer dans l'édition de la " cron table ", penchons
nous d'abord sur ce que nous allons y inscrire.
Les commandes que le démon " crond " doit exécuter s'écrivent sur
une seule ligne et doivent obligatoirement respecter la syntaxe
suivante :
mm hh jj MM JJ commande option
Les paramètres précités peuvent prendre pour valeur :
- mm : minutes, de 0 à 59
- hh : heures, de 0 à 23
- jj : jour du mois, de 1 à 31
- MM : mois, de 1 à 12
- JJ : jour de la semaine, de 0 à 6 0 représente dimanche,
1 lundi, 2 mardi, etc.
- commande : saisissez votre commande. Par exemple, si vous
voulez copier le fichier /home/toto/texte.txt vers le répertoire
/home/toto/archives, tapez " cp /home/toto/texte.txt /home/toto/archives
".
- option : Pour écrire des informations périodiquement dans
un fichier, tapez " > /mon_repertoire/nom_du_fichier ". Ceci effacera
le fichier " nom_du_fichier " puis inscrira les informations. Pour
ne pas vider le fichier à chaque fois mais écrire à la fin de celui-ci,
remplacez " > " par " >> ". Un mail de confirmation vous sera envoyé
après l'exécution d'une commande. Pour ne pas recevoir ce mail,
tapez " > /dev/null ".
mm, hh, jj, MM et JJ peuvent également être substitués par :
, : La virgule représente le " et ". Pour lancer une action
le 12 et le 15 du mois par exemple, tapez " 12,15 " à la place de
jj.
- : Le tiré signifie " jusqu'à ". Ainsi, " 12-15 " signifie
du 12 au 15.
* : L'étoile représente toutes les valeurs d'un paramètre.
Si vous mettez une étoile à la place de hh, l'action sera effectuée
toutes les heures.
/ : Le slash vous permet de spécifier une répétition: Pour tous
les 3 mois, remplacez MM par */3
EDITION DE VOTRE CRON TABLE
Voyons maintenant comment saisir les commandes que vous souhaitez
programmer:
Lancez un terminal et tapez " crontab -e ".
L'éditeur vi s'exécute. Appuyez sur " i " pour pouvoir écrire, "--
INSERT --" s'affiche en bas de la fenêtre.
Nous allons dans cet exemple demander à Linux de lister le contenu
du répertoire /usr dans le fichier usr.txt tous les jours à midi.
Tapez :
0 12 * * * ls /usr > /home/toto/usr.txt
Appuyez ensuite sur " Echap " (ou Esc), "-- INSERT --" disparaît.
Tapez " wq " (write et quit) pour écrire et quitter.
Un message apparait : " crontab: installing new crontab ", l'utilitaire
vous répond que les modifications du fichier ont bien été prises
en compte.
Vous pouvez bien sûr exécuter des scripts bash ou perl pour générer
par exemple des pages HTML pendant la nuit. Vous pouvez programmer
également un redémarrage de la machine avec la commande " /sbin/reboot
" ou " shutdown -r now ".
Il existe un certain nombre d'utilitaires graphiques vous permettant
de gérer et programmer vos tâches sous Linux. " Visual Cron " par
exemple est une " façade " graphique de Cron. Cet outil est très
simple à utiliser mais il s'interpose entre vous et " crontab ".
Une petite retouche personnelle au fichier est souvent nécessaire
et de plus, on ne travaille pas toujours sous X. Vous trouverez
" Visual Cron " à l'adresse suivante : http://www.linux-kheops.com/pub/vcron/vcronFR.html
Voilà, j'espère vous avoir éclairé quelque peu sur " Cron ".
Jean-François
GAZET
|