Taches automatisées

Transcription

Taches automatisées
Taches automatisées
Stéphane Gill
[email protected]
Table des matières
Introduction
2
crontab
2
Le démon crond :
2
Les fichiers « cron tables » :
3
La commande crontab :
3
Syntaxe de cron
4
Édition de votre cron table
6
Anacron
6
FICHIER DE CONFIGURATION
6
LANCEMENT ET INTERRUPTION DU SERVICE
8
La commande at
8
Fonctionnement
8
Syntaxe
9
Contrôle de l'utilisation de la commande
Références
10
11
Document écrit par Stéphane Gill
© Copyright 2004 Stéphane Gill
Ce document est soumis à la licence GNU FDL.
Permission vous est donnée de distribuer, modifier des copies de ce document tant que cette note apparaît clairement.
Taches automatisées
Introduction
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
Il est possible de lancer automatiquement des processus de trois manières différentes :
•
at ;
•
crontab;
•
anacron
crontab
Derrière le terme CRON se cache 3 éléments :
•
Le démon crond
•
Les fichiers « cron tables »
•
La commande crontab
Le démon crond :
Ce démon est un programme lancé automatiquement au démarrage de votre système. 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.
Pour lancer le service cron, utilisez la commande /sbin/service crond start. Pour
interrompre le service, utilisez la commande /sbin/service crond stop.
© Copyright 2004 Stéphane Gill
Page 2
Taches automatisées
#
/sbin/service crond start|stop|status
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.
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 « cron table » par utilisateur. Par exemple, pour
l'utilisateur root, vous trouverez le fichier /var/spool/cron/root.
Attention: il ne faut jamais éditer directement les fichiers de « cron tables ». Il faut passer par
l'utilitaire crontab afin 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.
Syntaxe :
crontab option
Voici les principales option :
Option
Description
-e
Ouvre l'éditeur par défaut (vi) et votre « cron table », si elle existe,
sinon elle sera créée lorsque vous enregistrerez le fichier.
-l
Affiche simplement votre table.
-r
Supprime votre « cron table ».
-u nom_utilisateur
Éditer la table d'un utilisateur.
© Copyright 2004 Stéphane Gill
Page 3
Taches automatisées
Voici un extrait d'un fichier de configuration :
# crontab -l
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
# Execution de supercleaner pour le nettoyage des logs :
15 10 * * 1 /sbin/supercleaner
Ce fichier de « cron table » définit quelques variables d'environnement, avant d'énumérer les
tâches périodiques.
Syntaxe de cron
Les commandes que le démon crond doit exécuter s 'écrivent sur une seule ligne est doivent
obligatoirement respecter la syntaxe suivante :
mm hh jj MM JJ Commande-à-lancer
Où :
mm :
minutes (de 0 à 59)
© Copyright 2004 Stéphane Gill
Page 4
Taches automatisées
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 = dimanche)
mm, hh, jj, MM, JJ peuvent être également substitués par :
,:
La virgule représente le « et ». Pour lancer une action le 12 et le 15 du mois, taper
« 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
Exemples :
1. Lister le contenu de /usr dans le fichier /home/kmaster/usr.txt tous les jours à
midi :
0 12 * * * ls /usr > /home/kmaster/usr.txt
© Copyright 2004 Stéphane Gill
Page 5
Taches automatisées
2. Exécuter un script de nettoyage des logs tous les lundi à 10 h 15 :
15 10 * * 1 /sbin/supercleaner
3. Faire exécuter du script backup tout les lundi à 11h30.
30 11 * * 1 /root/backup
Édition de votre cron table
Lancez la commande crontab -e . L'éditeur vi s'exécute. Quand vous quittez l'éditeur en
enregistrant, vous voyez apparaître le message : « crontab: installing new crontab ». L'utilitaire
crontab vous informe que les modifications du fichier ont été prises en compte.
Anacron
Anacron est un planificateur de tâches similaire à cron, à la différence près qu'il ne nécessite pas
l'exécution continue du système. Anacron peut être utilisé pour l'exécution quotidienne,
hebdomadaire et mensuelle des tâches généralement exécutées par cron.
Pour pouvoir utiliser le service Anacron, le paquetgage RPM anacron doit être installé. Pour
savoir si le paquetage est installé, utilisez la commande rpm –q anacron.
# rpm -q anacron
FICHIER DE CONFIGURATION
Les tâches Anacron sont répertoriées dans le fichier de configuration /etc/anacron.
© Copyright 2004 Stéphane Gill
Page 6
Taches automatisées
Chaque ligne du fichier de configuration correspond à une tâche et a le format :
Period elay
job-identifier
command
Period
fréquence (en jours) utilisée pour l'exécution de la commande
Delay
temps d'attente en minutes
job-identifier description de la tâche, utilisée dans les messages Anacron et comme nom
du fichier daté de la tâche ; peut contenir n'importe quel caractère autre
qu'un blanc (sauf les barres obliques).
Command
commande à exécuter
Pour chaque tâche, Anacron détermine si la tâche a été exécutée dans la période spécifiée dans
le champ period du fichier de configuration. Si ce n'est pas le cas, Anacron exécute la commande
spécifiée dans le champ command après avoir respecté le délai d'attente spécifié dans le champ
delay.
Une fois la tâche terminée, Anacron enregistre la date dans un fichier daté dans le répertoire
/var/spool/anacron. Seule la date est utilisée (et pas l'heure), et la valeur de job-identifier est
utilisée comme nom de fichier pour le fichier daté.
Les variables d'environnement comme SHELL et PATH peuvent être définies dans /etc/anacron
comme pour le fichier de configuration cron.
Le fichier de configuration par défaut ressemble à ce qui suit :
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# These entries are useful for a Red Hat Linux system.
1
5
cron.daily
run-parts
/etc/cron.daily
7
10
cron.weekly
run-parts
/etc/cron.weekly
© Copyright 2004 Stéphane Gill
Page 7
Taches automatisées
30
15
cron.monthly
run-parts
/etc/cron.monthly
LANCEMENT ET INTERRUPTION DU SERVICE
Pour lancer le service anacron, utilisez la commande /sbin/service anacron start. Pour
interrompre le service, utilisez la commande /sbin/service anacron stop.
#
/sbin/service anacron start|stop|status
La commande at
La commande at permet l'exécution d'une tâche donnée à un moment donné, et ce, une seule
fois. Si la machine n'est pas allumée à ce moment-là, la tâche ne sera pas exécutée. Toutefois,
dès que la machine est rallumée, elle est exécutée. La commande est utilisable par root et/ou
tout autre utilisateur déclaré sur la machine.
Fonctionnement
C'est le démon atd qui est en attente sur votre machine, qui se charge d'exécuter toutes les
tâches planifiées avec at. Comme tous les services, on le retrouve dans le répertoire /etc/init.d
(parfois c'est un lien vers /etc/rc.d/init.d). En cas de dysfonctionnement de at, il convient de
vérifier, notamment, que le démon atd est bien lancé :
# /etc/rc.d/init.d/atd status
atd (pid 818) en cours d'exécution
Les travaux en attente d'exécution sont stockés dans la file d'attente située dans /var/spool/at.
© Copyright 2004 Stéphane Gill
Page 8
Taches automatisées
Syntaxe
Ajouter une programmation de tâche : at. Deux façons de l'utiliser : avec une ligne de commande
ou un fichier contenant un script à exécuter.
Syntaxe :
commande : at HEURE
La commande est ensuite saisie en mode interactif. Vous pouvez saisir autant de lignes que
nécessaire et terminer par Ctrl+D pour obtenir le End Of Text.
Exemple : programmer l'affichage de "coucou" à 23h sur la console 5
anne@pingu$ at 23:00
warning: commands will be executed using (in order) a) $SHELL b) login
shell c) /bin/sh
at> echo coucou > /dev/pts/5<EOT>
Exemple : programmer l'exécution du script /home/anne/sauve à 23h.
anne@pingu$ at -f /home/anne/sauve c23:00
Le format de HEURE est commun aux 2 notations et permet une syntaxe assez large. Ce qui est
utilisable :
HHMM ou HH:MM
MMJJAA ou MM/JJ/AA ou MM.JJ.AA : attention, les jours sont à noter après le mois
Exemple : Lister les tâches programmées au moyen de at : atq
# atq
4 2002-12-11 02:10 a root
5 2002-12-11 02:15 a root
6 2002-12-11 02:20 a root
© Copyright 2004 Stéphane Gill
Page 9
Taches automatisées
Dans ce cas de figure, on a 3 tâches programmées avec at par root. La colonne de gauche
indique le numéro de job attribué à la tâche (par ordre croissant d'arrivée dans la file).
Exemple : Supprimer une ou plusieurs tâches programmées en attente d'exécution : atrm n°job
# atrm 6
Contrôle de l'utilisation de la commande
La commande at est accessible à root et aux utilisateurs déclarés sur la machine. Toutefois vous
avez à votre disposition 2 fichiers : /etc/at.allow (pour autoriser spécifiquement des utilisateurs à
utiliser at) et/ou /etc/at.deny (pour interdire spécifiquement à des utilisateurs d'utiliser at). Si
aucun des 2 fichiers n'existe, seul root peut utiliser la commande. Par défaut, il existe souvent un
fichier /etc/at.deny vide qui autorise ainsi l'utilisation de cette commande par tous les utilisateurs
(puisque personne n'est interdit).
Exemple : je veux autoriser uniquement les utilisateurs root, pingu et anne à utiliser la
commande
# cat /etc/at.allow
root
pingu
anne
Et, je ne crée pas de fichier /etc/at.deny donc, puisqu'il n'existe pas, personne n'a le droit d'utiliser
at sauf ceux qui sont autorisés par /etc/at.allow.
© Copyright 2004 Stéphane Gill
Page 10
Taches automatisées
Références
« Red Hat Linux 9 : Guide de référence Red Hat ». Red Hat Inc., 2003.
Jeffrey Dean, « LPI Linux Certification in a Nutshell, A Desktop Quick Reference », O’Reilly, 2001.
Michael Wielsh, Jens Prahm et H.-G. Esser, « La Bible Linux », Micro Application, 1999.
© Copyright 2004 Stéphane Gill
Page 11