Ordonnance de tâches avec cron

Les sauvegardes de données font partie des manipulations les plus fréquemment automatisées. Celle-ci doivent être faîtes lorsque le système est le moins occupé, donc de préférence durant la nuit. Pour cela, les systèmes de type Unix possèdent cron qui s'occupe de faire à votre place tout ce que vous lui avez ordonné en fonction du jour, de l'heure, du mois, etc. Bien sûr, cron est très utile pour les sauvegardes, mais il permet également de lancer toutes sortes de programmes.

OU EST LE PROGRAMME CRON ?

Il est très courant de parler de cron comme d'une application. En fait, dans les systèmes Linux actuel il n'existe bien souvent aucune commande nommée cron. C'est le démon crond et la commande crontab qui constituent cron. Il y a quelques années, le démon crond se nommait cron et était placé dans /etc. De nos jours, les distributions modernes de Linux placent crond ou parfois cron dans /sbin.

SYNTAXE DE CRONTAB

Vous l'aurez compris, la seule manière de passer des ordres à cron est d'utiliser la commande crontab. Pour ajouter une entrée dans la table cron, tapez simplement crontab -e. Si tout se passe normalement, l'éditeur vi devrait se lancer vous présentant à l'écran la table actuelle.

La syntaxe d'une entrée est la suivante :

mm hh jj MMM JJJ commande > /dev/null

où :

mm représente les minutes

hh représente l'heure

jj représente le numéro du jour dans le mois

MMM représente le nom du mois en abrégé

JJJ représente le nom du jour en abrégé ou en chiffre (0 pour dimanche, 1 pour lundi, etc.)

commande représente l'appel d'une commande ou d'un script shell.

La mention >/dev/null permet d'empêcher cron de vous envoyer un mail de confirmation. En remplaçant >/dev/null par >/nomdefichier, vous pouvez garder une trace des actions de cron.

Exemples :

15 10 * * * df >>/espace_disque.log

Ici, tous les jours à 10 heures 15, la sortie de la commande df (disk free) est stockée dans un fichier espace_disque.log à la racine du disque. Les astérisques représentent la notion de ãtousä ou ãn'importe lequelä.

15 10 12 * * df >>/espace_disque.log

Idem que l'exemple précédent, mais ici l'opération se fera à 10 heures 15 tous les 12 du mois.

15 10 12,15 * * df >>/espace_disque.log

Idem mais le 12 et le 15 du mois.

15 10 12-15 * * df >>/espace_disque.log

Idem mais tous les jours du 12 au 15 du mois.

15 10 */3 * * df >>/espace_disque.log

Cette fois l'opération se fera à 10 heure 15 mais tous les trois jours (le 1, 4, 7, 10, etc...) du mois.

LES FICHIERS

Lorsque vous modifiez la table cron, vous modifiez en réalité un fichier placé dans /var/spool/cron/crontabs/utilisateur. Pour le root par exemple, ce fichier s'appellera tout logiquement root.

Ne perdez pas de vue que tous les utilisateurs n'ont pas forcément les mêmes droits sur un système Linux. Evitez donc de lancer des commandes depuis une table cron pour un utilisateur alors que celui-ci n'a pas les permissions pour le faire.

Si vous êtes allergique à vi, il vous est possible de faire appel à un autre éditeur en modifiant une variable d'environnement VISUAL ou EDITOR selon la version de cron que vous utilisez. Verifiez la man page de cron pour les informations spécifique à votre version.

Dernier point, il existe un certain nombre d'utilitaires ãfacadeä pour cron dont le très beau Visual Cron. Ces utilitaires sont plus abordables pour les nouveaux, mais place invariablement un élément supplémentaire entre vous et cron. n


© Copyright 2000 Diamond Editions/Linux magazine France - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License"