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.