Recherche


imprimer pdf
Tâches automatisées

Dans Linux, des tâches peuvent être configurées pour s'exécuter automatiquement pendant une période de temps donnée et à des dates données. Red Hat Linux est préconfiguré pour l'exécution de certaines tâches système permettant de garder votre système à jour. Par exemple, la base de données est mise à jour quotidiennement. Un administrateur système peut utiliser des tâches automatisées pour effectuer des copies de sauvegarde périodiques, surveiller le système, exécuter des scripts personnalisés, etc.

Configuration d'une tâche Cron

Le fichier de configuration principal de cron, /etc/crontab, contient les lignes suivantes :

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 **** root run-parts /etc/cron.hourly
02 4*** root run-parts /etc/cron.daily
22 4 **0 root run-parts /etc/cron.weekly
42 4 1 **root run-parts /etc/cron.monthly


Les quatre premières sont des variables servant à configurer l'environnement dans lequel les tâches cron sont exécutées. La valeur de la variable SHELL indique au système quel environnement shell il doit utiliser (dans cet exemple, bash shell), et la variable PATH définit le chemin d'accès utilisé pour l'exécution des commandes. Le résultat des tâches cron est envoyé par e-mail au nom d'utilisateur défini par la variable MAILTO. Si la variable MAILTO est une chaîne vide (MAILTO=""), aucun e-mail ne sera envoyé. La variable HOME peut être utilisée pour le paramétrage du répertoire à utiliser pour l'exécution de commandes ou de scripts.

Chacune des lignes du fichier /etc/crontab a le format :

minute hour day month dayofweek command

* minute - nombre entier entre 0 et 59
* hour - nombre entier entre 0 et 23
*day - nombre entier entre 1 et 31 (si le mois est spécifié, le jour doit être valide)
* month - nombre entier entre 1 et 12 (ou abréviation du nom du mois)
* dayofweek - nombre entier entre 0 et 7, dimanche étant représenté par 0 ou 7 (ou l'abréviation du jour de la semaine)
* command - la commande à exécuter. La commande peut être une commande comme ls /proc >> /tmp/proc ou la commande d'exécution d'un script personnalisé dont vous êtes l'auteur.


Pour les valeurs ci-dessus, un astérisque (*) peut être utilisé pour indiquer toutes les valeurs valides. Par exemple, un astérisque utilisé pour la valeur du mois signifie une exécution de la commande tous les mois (avec respect des restrictions des autres valeurs).

Un trait d'union (-) placé entre deux nombres entiers indique une gamme de nombres entiers. Par exemple, 1-4 correspond aux nombres entiers 1, 2, 3 et 4.

Une liste de valeurs séparées par des virgules (,) correspond à une liste. Par exemple, 3, 4, 6, 8 correspond à ces quatre nombres entiers spécifiques.

La barre oblique (/) peut être utilisée pour spécifier des valeurs échelonnées. Pour passer un nombre entier dans une gamme, faites-la suivre de /. Par exemple, 0-59/2 permet de définir une minute sur deux dans le champ des minutes. Ces valeurs échelonnées peuvent également être utilisées avec un astérisque. Par exemple, la valeur */3 peut être utilisée dans le champ des mois pour passer un mois sur trois.

Les lignes commençant par un signe dièse (#) correspondent à des commentaires et ne sont pas traitées.

Comment exécuter un script automatiquement sur le serveur dédié (en crond) ?

D'abord, il faut s'assurer que le script fonctionne en mode shell, c'est à dire qu'il est capable de s'exécuter depuis la ligne de commande. Pour cela, il faut placer dans la première ligne #!/usr/local/bin/php s'il s'agit d'un script php, #!/usr/bin/perl si c'est un script perl, ou #!/bin/bash pour un script shell, puis utiliser la commande chmod 700 script.cgi sur le script. Si vous avez l'accès telnet/ssh, vous pouvez tester son exécution avec ./script.cgi

Il suffit ensuite d'insérer dans le fichier /etc/crontab, le chemin du script et les heures d'exécution.

Exemple :

Mise en place d'un script automatique pour l'utilisation des courbes mrtgs:

*/5 **** root /usr/local/mrtg-2/bin/mrtg /home/ovh/www/mrtg/mrtg-sys/mrtg-sys/mrtg_nsxxxx.ovh.net.cfg >/dev/null 2>/dev/null

/home/ovh/www/mrtg/mrtg-sys/mrtg-sys/mrtg_nsxxxx.ovh.net.cfg correspond au chemin vers le script d'exécution.
*/5 **** correspond aux heures d'exécution.
Ici le script sera lancé toutes les 5 minutes.