Ordonnancement des taches sous Linux avec Cron Sites sur le même sujet Télécharger des documentations

Introduction à l'ordonnancement des tâches

L'ordonnancement des tâches consiste à exécuter automatiquement une tâche (une application, une commande, ...) à intervalles de temps réguliers ou bien à des moments précis. Généralement ce type de procédé est utilisé pour automatiser des sauvegardes (on parle de backup), notamment à des heures où le système est le moins sollicité (typiquement pendant la nuit pour les serveurs).

Présentation de cron

Les systèmes de type Unix (donc Linux) possèdent une application (plus exactement un démon) permettant de réaliser ce type de service, il s'agit de cron.

Cron est basé sur une table référençant les tâches à lancer ainsi que le mois, le jour, l'heure, la minute, la seconde à laquelle l'exécuter.

Cron est ainsi constitué:

cron (en réalité crond) se trouve généralement dans le répertoire /usr/sbin ou /sbin dans les distributions récentes. Pour connaître l'emplacement de crond dans votre distribution linux, il vous suffit de taper la commande suivante:

whereis crond

La commande crontab édite en fait un fichier relatif à l'utilisateur qui l'exécute. Ce fichier se situe dans:

/var/spool/cron/crontabs/utilisateur
Ainsi pour l'utilisateur root la table cron sera stockée dans:
/var/spool/cron/crontabs/root

Syntaxe de cron

Afin d'éditer la table cron, il suffit d'exécuter la commande suivante:

crontab -e
Cette commande a pour effet de lancer l'éditeur Vi présentant la table actuelle (donc aucune si il s'agit du premier lancement de crontab).

Chaque entrée de la table (chaque ligne) correspond à une tâche à exécuter et est notée de la façon suivante:

mm hh MMM JJJ tâche > log
Dans cette syntaxe: Pour chaque unité de temps (minute/heure/...) les notations sont possibles:

Quelques exemples d'utilisation

Imaginons que l'on veuille faire un journal (dans le fichier /tmp/log_df.txt par exemple)automatisé de l'espace disque libre (commande df) à des intervalles de temps précis:

Il est également possible d'exécuter automatiquement des commandes plus complexes à l'aide d'un script shell. Il suffit donc dans un premier temps de créer un script. Puis de le déclarer en tant que tâche dans la table cron.

Le script shell suivant (que l'on supposera stocke dans /home/backup sous le nom backup.cmd)exporte les enregistrements de MySQL (de la table ccmusers par exemple) dans un fichier dont le nom est ccmusers suivi de la date sous la forme jour-mois-annee-heure-minute:

#!/bin/sh
DATE=$(date +%d-%m-%Y-%H-%M)
/usr/local/mysql/bin/mysqldump -u root ccmusers > /home/backup/ccmusers${DATE}.sql
Ainsi pour automatiser (chaque jour à 23h59) le backup de la table ccmusers de MySQL, il suffira d'ajouter l'entrée suivante dans la table cron:
59 23 * * /home/backup/backup.cmd >>/dev/null

Inspiré d'un article de Linux Magazine


© Copyright 2001 Jean-François Pillou
Ce document issu de CommentCaMarche.net est soumis à la licence GNU FDL.Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.