• Aucun résultat trouvé

Fichier de description de tˆ aches

5.4 R´ ep´ etition de tˆ aches : crontab

5.4.2 Fichier de description de tˆ aches

Le fichier de description des t^aches va contenir les instructions n´ecessaires au processus de supervision (processus "cron(8)"). Celui d´ecrira les op´erations de la fa¸con suivante "ex´ecute cette commande

`

a cette heure l`a ce jour-ci".

Dans ce fichier,

{ toute ligne commen¸cant par le caract`ere "#" est ignor´ee (ligne de commentaires),

{ les lignes blanches sont ignor´ees,

{ les espaces et les tabulations en d´ebut de ligne sont ignor´es.

Remarque 5.5 :

Il n’est pas possible de mettre des commentaires au milieu d’une ligne. Le signe de commentaire doit donc ˆetre le premier caract`ere de la ligne.

Chaque ligne de description, hormis les lignes de commentaires, peuvent , soit d´efinir des variables d’environnement pour l’ensemble des t^aches `a effectuer, soit des commandes `a ex´ecuter aux instants sp´ecifi´es. La d´efinition d’une variable d’environnement dans le fichier ob´eit `a la syntaxe suivante :

nom = valeur

o`u "nom" repr´esente le nom de la variable d’environnement et "valeur"

repr´esente la valeur qui lui est affect´ee. Les espaces de part et d’autre du signe ´egual "=" sont optionnels. Si la valeur `a affecter `a la variable est une chaine de caract`eres, il est pr´ef´erable de la mettre entre simple quotes ("’"¨ı¿12u double quotes (""").

Pour toutes les commandes qui seront ex´ecut´ees :

– leur sortie standard et leur sortie d’erreur standard redirig´ees vers la boite aux lettres de l’utilisateur,

– leur entr´ee standard devra ˆetre explicitement pr´ecis´ee si cela est nec´essaire.

5.4. R´ep´etition de tˆaches :crontab

Certaines variables d’environnement sont automatiquement positionn´ees par le gestionnaire de t^aches cron(8) :

Variable Description

SHELL repr´esente l’interpr´eteur de commande par d´efaut. Cette variable est initialis´ee `a

"/bin/sh", donc le Bourne Shell.

LOGNAME repr´esente le nom de connexion de l’utilisateur. Par d´efaut, elle

correspond `a votre entr´ee dans la base des utilisateurs.

USER a exactement les m^emes fonctionnalit´es que la variable "LOGNAME". Cependant, certains utilitaires issus des syst`emes BSD2 utilisent "USER" plut^ot que "LOGNAME".

HOME repr´esente votre r´epertoire de connexion.

Par d´efaut, il correspond `a celui d´efini dans les caract´eristiques de l’utilisateur.

MAILTO En plus des variables LOGNAME, HOME et SHELL, le processus "cron(8)" examine le contenu de la variable d’environnement

"MAILTO" afin de savoir s’il est n´ecessaire d’envoyer un message donnant le r´esultat de l’ex´ecution des commandes. Si cette variable est d´efinie et non vide, elle doit contenir l’adresse courrier de la personne

`

a qui envoyer les messages. Si elle est d´efinie mais vide3, aucun message ne sera envoy´e.

Au cas o`u aucune option se serait pr´ecis´e gr^ace `a la variable "MAILTO", le r´esultat produit sur la sortie standard est envoy´e dans la boite aux lettres de l’utilisateur poss´edant cette liste de t^aches `a ex´ecuter.

Remarque 5.6 :

Cette fonctionnanlit´e offerte grˆace `a la variable ”MAILTO” peut ˆetre tr`es utile si vous d´ecidez d’utiliser un autre serveur de messagerie que ”/usr/lib/sendmail”. Dans ce cas, ”/bin/mail” sera employ´e pour assurer l’acheminement des messages. ”/bin/mail” n’utilisera pas la notion d’aliasesde ”/usr/lib/sendmail”.

Les lignes de description de t^aches se composent de plusieurs champs s´epar´es par des espaces ou tabulations. Chaque ligne poss`ede :

{ cinq champs pr´ecisant la date et l’heure `a laquelle la commande doit ^etre lanc´ee,

{ dans le cas o`u la table de description est celle de l’administrateur, le nom de l’utilisateur pour lequel on lance la commande4,

{ la commande `a lancer.

4Cette fonctionnalit´e n’est pas disponible sur tous lesUnix. On la trouvera par exemple sousLinux.

S.Baudry, Introduction au shell – v4.0 65

Chapitre 5. Le mode multi-tˆache

Le service "cron(8)"5 examine toutes les minutes, les tables de description.

Lorsque la date pr´ecis´ee dans une entr´ee d’une table de description de t^aches, le service "cron(8)" cr´ee un sous processus sous l’identit´e de la personne et lance la commande `a l’int´erieur de ce contexte. La sp´ecification de la date et de l’heure se compose des cinq informations suivantes :

jour de la semaine 0-76

Si l’un de ces champs contient le caract`ere "*", celui-ci ne doit pas ^etre pris en compte, ou bien l’une des bornes inf´erieure ou sup´erieure doit ^etre consid´er´ee dans la d´etermination de la date. Par exemple :

0 1 * * * indique : "tous les jours `a 01 :00"

0 0 * * 1 indique : "tous les lundis `a minuit"

* * * 2 3 indique : "tous les mardis du mois de f´evrier `a minuit"

Pour chaque champ, il est possible de donner : { une s´equence de nombres s´epar´es par des virgules,

{ des plages de nombre, en sp´ecifiant les bornes inf´erieurs et sup´erieures s´epar´ees par le caract`ere "-",

{ de combiner les deux possibilit´es.

Exemple 5.7 :

Aucun espace ne doit ˆetre introduit dans les cinq champs associ´es `a la date et `a l’heure de lancement d’une commande.

Remarque 5.8 :

Certaines extensions du service ”cron(8)” permettent de modi-fier l’incr´ement des plages de nombres. Une plage de nombres sui-vie de ”/<number>¿¿ indique le pas entre les valeurs `a prendre `a l’int´erieur de l’intervalle. Par exemple, ”0-23/2”, dans le champ

¡¡heure” sp´ecifie toutes les deux heures d’une journ´ee (c’est-`a-dire

”0,2,4,6,8,10,12,14,16,18,20,22”). Cette option est aussi au-toris´ee `a la suite du caract`ere ”*”. Par exemple, ”*/2” au niveau du champ ”heure”, sera identique `a l’exmple pr´ec´edent, c’est-`a-dire qu’il signifiera ”toutes les deux heures”.

Le dernier champ, c’est-`a-dire le reste de la ligne, sp´ecifie la commande `a ex´ecuter. Par cons´equent, la sp´ecification doit ˆetre

ins-5”cron(8)” est un processus syst`eme s’ex´ecutant en permanence. Dans le jargonUnix, un tel processus est appel´e ”d´emon” ou ”daemon”.

5.4. R´ep´etition de tˆaches :crontab

crite sur une seule ligne. La commande sera ex´ecut´ee dans le contexte

du Bourne Shell (/bin/sh) ou celui pr´ecis´e gr^ace `a la variable d’environnement

"SHELL".

Remarque 5.9 :

Le jour de l’ex´ecution d’une commande peut ˆetre pr´ecis´e dans deux champs ¨ı¿12

– le jour du mois (3echamp), – le jour de la semaine (5echamp).

Si ces deux champs sont renseign´es, c’est-`a-dire qu’ils ne contiennent pas le caract`ere ”*”, la commande sera ex´ecut´ee d`es que la date courrante correspondra `a l’une des deux possibilit´es. Par exemple,

”30 4 1,15 * 5” indiquera que la commande devra ˆetre ex´ecut´ee

`

a 04 :30 le 1ier et le quinze de chaque mois, mais aussi tous les vendredi.