Web Development Knowledge Base
| |
Sections :
RSS Feed You too, please publish your useful code snippets in any programming language : write an article ! Plateforme d'envoi de gros fichiers en ligne Dépannage site web Blog infogérance Hébergement e-mail |
Olivier Ligny - - 26/03/2008 - vue 6387 fois
Programmation de travaux - tâches automatisées sous LinuxArticle publié sur http://lea-linux.org/cached/index/Admin-admin_tools-automate.html Pourquoi ces outils de programmation ?Imaginez que vous souhaitez lancer une tâche durant la nuit, ou bien effectuer des sauvegardes régulières de vos données, remettre à jour la base de vos packages... L'objectif de cet article est de vous présenter le fonctionnement et le paramétrage de trois outils de programmation sous Linux. Les différents outils de programmation de tâchesVotre système dispose de plusieurs outils de programmation de tâche en fonction de ce que vous souhaitez réaliser :
La commande atComme on l'a vu plus haut, at permet de programmer l'exécution d'une tâche à un moment donné. FonctionnementC'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é : root@pingu# /etc/rc.d/init.d/atd status Les travaux en attente d'exécution sont stockés dans la file d'attente située dans /var/spool/at. SyntaxeAjouter une programmation de tâche : at. Deux façon de l'utiliser : avec une ligne de commande ou un fichier contenant un script à exécuter. Syntaxe :
anne@pingu$ at 23:00
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 :
Lister les tâches programmées au moyen de at : atq root@pingu# atq 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). Supprimer une ou plusieurs tâches programmées en attente d'exécution : atrm n°job root@pingu# atrm 6 Contrôle de l'utilisation de la commandeLa 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 root@pingu# cat /etc/at.allow 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. La commande cronFonctionnement de cronTout comme at, cron permet de programmer des travaux à exécuter, mais ceci de manière récurrente. Par exemple pour faire une sauvegarde toutes les nuits à 2h30. Les composantes pour le fonctionnement de cron sont :
root@pingu# /etc/rc.d/init.d/crond status
Commandes et configuration de croncrontab : le fichier de configuration de cronIl existe une crontab par utilisateur. Seul root peut consulter chacune d'entre elles. Syntaxe : Le fichier doit comporter une tâche à programmer par ligne. Chaque ligne doit comporter obligatoirement 6 colonnes :
Exemple : pour excuter le script /root/sauve.sh tous les jours à 23h15 on mettra dans la crontab de root 15 23 * * * /root/sauve.sh Les colonnes contenant la date d'exécution peuvent contenir divers formats pour indiquer la date (pour les exemples, on utilisera la colonne des minutes de la crontab) :
Il est bien sûr possible de combiner les différentes notations pour obtenir ce dont vous aurez besoin. les commandesNous avons vu la syntaxe de la crontab. Pour éditer, modifier ou visualiser le contenu d'une crontab, il vous faut utiliser la commande crontab avec les options suivantes :
Remarque : par défaut, les commandes crontab agissent sur votre crontab uniquement. (rappel : il y a autant de crontab que d'utilisateurs ayant définit des tâches à effectuer avec cron.) Exemple : pour modifier la crontab de l'utilisateur anne root@pingu# crontab -u anne -e la crontab du systèmeLorsque vous installez votre distribution, une crontab particulière est crée, celle du système : /etc/crontab root@pingu# cat /etc/crontab 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 Le fichier définit tout d'abord un certain nombre de variables pour l'exécution des tâches système : SHELL, PATH, MAILTO, HOME(la définition de variables est également possible dans une crontab ordinaire, mais beaucoup plus rarement utilisé.). La suite du fichier utilise ensuite la syntaxe vue ci-dessus. L'exécution des tâches utilise un script particulier : /usr/bin/run-parts. Il s'agit d'un script bash qui exécute toutes les commandes situées dans le répertoire passé en argument. On remarquera que la temporisation utilisée pour programmer chacune de ces lignes correspond à des tâches devant s'exécuter toutes les heures, les jours, les semaines, les mois. Exemple : la crontab système exécute tous les jours run-parts /etc/cron.daily. root@pingu# ls /etc/cron.daily 00-logwatch 0anacron makewhatis.cron slocate.cron tmpwatch 00webalizer logrotate rpm tetex.cron Ce sont donc tous les scripts qui seront exécutés tous les jours à 4h02. Contrôle de l'utilisation de la commande cronTout comme pour la commande at, la commande la commande cron est accessible à root et aux utilisateurs déclarés sur la machine. Toutefois vous avez là encore à votre disposition 2 fichiers : /etc/cron.allow et/ou /etc/cron.deny (qui fonctionne comme ceux de at). Si aucun des 2 fichiers n'existe, le comportement peut varier d'une distribution à une autre : soit root seul peut utiliser la commande, soit aucune restriction n'est appliquée. Exemple : je veux autoriser uniquement les utilisateurs root, pingu et anne à utiliser la commande root@pingu# cat /etc/cron.allow root pingu anne Et, je ne crée pas de fichier /etc/at.deny. la commande anacronFonctionnement de anacronContrairement à cron, anacron ne fonctionne pas avec un démon. Il s'agit d'une commande lancée au démarrage (/usr/sbin/anacron). Elle est souvent lancée comme un service, on peut donc, dans ce cas, trouver son script de démarrage dans /etc/init.d anacron permet l'exécution d'une tâche au bout d'une période de temps qui se serait écoulée. Contrairement à cron, la spécification de la période ne permet pas autant de précision. Toutefois on a vu qu'une tâche programmée à l'aide de cron nécessite que le démon crond soit activé. Donc si la machine est éteinte, la tâche ne sera pas exécutée. Imaginez que vous programmiez une tâche pour qu'elle s'exécute toutes les semaines. Votre machine est éteinte durant 10 jours, la commande sera donc exécutée au prochain redémarrage. Attention anacron est un utilitaire strictement réservé à root. Le fichier de configuration est /etc/anacrontab. Le fichier de configuration : anacrontabIl a une syntaxe similaire à celle de la crontab, il faut donc mette une ligne par tâche à effectuer. Chaque ligne doit contenir 4 colonnes :
La ligne suivante : 1 65 cron.daily run-parts /etc/cron.daily signifie que la commande run-parts /etc/cron.daily sera exécutée 1 fois par jour, chaque tâche sera séparées des autres d'au moins 65 minutes. Exemple : ci-dessous un exemple de anacrontab root@pingu# cat /etc/anacrontab SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 1 65 cron.daily run-parts /etc/cron.daily 7 70 cron.weekly run-parts /etc/cron.weekly 30 75 cron.monthly run-parts /etc/cron.monthly |
Nos partenaires : iPhone 8 Cases & Protection |