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