Sommaire |
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.
Votre système dispose de plusieurs outils de programmation de tâche en fonction de ce que vous souhaitez réaliser :
Comme on l'a vu plus haut, permet de programmer l'exécution d'une tâche à un moment donné.
C'est le démon qui est en attente sur votre machine, qui se charge d'exécuter toutes les tâches planifiées avec . Comme tous les services, on le retrouve dans le répertoire (parfois c'est un lien vers ). En cas de dysfonctionnement de , il convient de vérifier, notamment, que le démon est bien lancé :
root@pingu# /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 .
Ajouter une programmation de tâche : . 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
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> echo coucou > /dev/pts/5<EOT>
anne@pingu$ at -f /home/anne/sauve c23:00
Le format de est commun aux 2 notations et permet une syntaxe assez large. Ce qui est utilisable :
Lister les tâches programmées au moyen de :
Exemple :
root@pingu# 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
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 :
Exemple :
root@pingu# atrm 6
La commande est accessible à root et aux utilisateurs déclarés sur la machine. Toutefois vous avez à votre disposition 2 fichiers : (pour autoriser spécifiquement des utilisateurs à utiliser ) et/ou (pour interdire spécifiquement à des utilisateurs d'utiliser ). Si aucun des 2 fichiers n'existe, seul root peut utiliser la commande. Par défaut, il existe souvent un fichier 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
root
pingu
anne
Et, je ne crée pas de fichier donc, puisqu'il n'existe pas, personne n'a le droit d'utiliser sauf ceux qui sont autorisés par .
Tout comme , 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
crond (pid 769) en cours d'exécution
Il existe une 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 tous les jours à 23h15 on mettra dans la 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.
Nous avons vu la syntaxe de la crontab. Pour éditer, modifier ou visualiser le contenu d'une , il vous faut utiliser la commande avec les options suivantes :
Remarque : par défaut, les commandes crontab agissent sur votre uniquement. (rappel : il y a autant de que d'utilisateurs ayant définit des tâches à effectuer avec .)
Toutefois l'administrateur (root) peut utiliser une option supplémentaire : . Il spécifie ainsi la de l'utilisateur qu'il veut éditer, modifier ou supprimer.
Exemple : pour modifier la crontab de l'utilisateur
root@pingu# crontab -u anne -e
Lorsque vous installez votre distribution, une particulière est crée, celle du système :
Le fichier définit tout d'abord un certain nombre de variables pour l'exécution des tâches système : , , , (la définition de variables est également possible dans une 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 : . 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 .
Le répertoire contient les commandes suivantes :
Ce sont donc tous les scripts qui seront exécutés tous les jours à 4h02.
Tout comme pour la commande , la commande la commande est accessible à root et aux utilisateurs déclarés sur la machine. Toutefois vous avez là encore à votre disposition 2 fichiers : et/ou (qui fonctionne comme ceux de ). 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
Et, je ne crée pas de fichier .
Contrairement à , ne fonctionne pas avec un démon. Il s'agit d'une commande lancée au démarrage (). Elle est souvent lancée comme un service, on peut donc, dans ce cas, trouver son script de démarrage dans
permet l'exécution d'une tâche au bout d'une période de temps qui se serait écoulée. Contrairement à , 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 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 est un utilitaire strictement réservé à root. Le fichier de configuration est .
Il 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 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
Voilà présentés les principaux outils de programmation des tâches sous Linux. D'autres outils existent, comme fcron qui comblerait certaines failles de sécurité de cron
N'hésitez pas à me faire parvenir vos remarques et ajouts divers sur le contenu de cet article.
@ Retour à la rubrique Administration système
Copyright © 01/01/2003, Anne
| | Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |