Logiciels
WJChess
Convert. €
 
  Humour
Blague du jour
 
  Presse
Linux
 
  Contact
Forum
Ecrivez-moi
 
© JeffProd.com



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