crontab - Table permettant de gérer le démon Cron.
Un fichier
crontab
contient des instructions pour le démon
cron(8).
Ces instructions ont la forme générale suivante : ``lancer cette commande
à telle heure, tel jour''.
Chaque utilisateur dispose de sa propre table crontab, et les commandes
contenues dans une table seront exécutées sous l'identifiant du propriétaire
de la table.
Les pseudo-utilisateurs Uucp et News disposent généralement de leurs propres
crontabs, ce qui évite d'invoquer explicitement
su(1)
dans une commande cron.
Les lignes blanches, et les espaces et tabulations en tête de lignes sont
ignorées. Les lignes dont le premier caractère non-blanc est un dièse (#) sont
considérées comme des commentaires, et sont également ignorées.
Notez que les commentaires ne peuvent pas se trouver sur la même ligne
qu'une commande cron, car ils seraient considérés comme des arguments
en ligne pour la commande à invoquer.
De même, un commentaire ne peut pas se trouver sur la même ligne qu'une
affectation de variable d'environnement.
Une ligne active dans une crontab devra donc être soit une affectation
de variable d'environnement, soit une commande cron.
Une ligne d'affectation d'environnement est de la forme
nom = valeur
où les espaces autour du signe égal (=) sont facultatifs, et où tous les
espaces ultérieurs feront partie intégrante de la valeur affectée à la
variable ayant le
nomindiqué.
La chaîne de
valeur
peut être inscrite entre guillemets ou entre quotes afin de protéger les
blancs initiaux et finaux.
Plusieurs variables d'environnement sont automatiquement
configurées par le démon
cron(8).
SHELL est rempli avec /bin/sh, LOGNAME et HOME sont configurées
à partir de la ligne de /etc/passwd correspondant au propriétaire de la crontab.
HOME et SHELL peuvent être surchargés par des affectations explicites
dans la crontab, LOGNAME non.
(Note : la variable LOGNAME est parfois nommée USER sur les systèmes BSD,
elle sera alors configurée).
En plus de LOGNAME, HOME, et SHELL,
cron(8)
prendra en compte la variable MAILTO s'il doit envoyer le résultat d'une
commande exécutée dans cette crontab. Si MAILTO est définie (et non vide),
le résultat est envoyé à l'utilisateur indiqué. Si MAILTO est défini et vide
(MAILTO=""), aucun courrier ne sera envoyé.
Sinon, le courrier sera émis vers le propriétaire de la crontab.
Cette option est utile si vous utilisez /bin/mail comme agent à la place de
/usr/lib/sendmail lorsque vous installez cron. /bin/mail ne gère pas d'alias,
et UUCP ne lit généralement pas son courrier.
Le format d'une commande cron est très proche du standard V7, avec quelques
options gardant une compatibilité ascendante.
Chaque ligne dispose de 5 champs de date et heure, suivi d'un nom d'utilisateur
s'il s'agit du fichier crontab central du système, suivi d'une commande.
Les commandes sont exécutées par
cron(8)
lorsque les champs minute, heure, et mois de l'année correspondent à la date
et
quand au moins l'un des deux autres champs (jour du mois, jour de la semaine)
correspond aussi (voir le paragraphe ``Note'' plus bas).
Notez que les moments non-existants, comme les heures manquantes au moment
des changements d'heure, ne seront jamais mises en correspondante, et
leurs jobs ne seront pas exécutés. De même les moments se reproduisant
deux fois (encore pendant les changements d'heure) déclencheront le
même job deux fois.
cron(8)
examine ses données une fois par minute.
Les champs de date et heure sont :
-
champs valeurs autorisées
----- --------------
minute 0-59
heure 0-23
jour du mois 0-31
mois 0-12 (ou noms, voir plus bas)
jour de semaine0-7 (0 et 7 sont Dimanche, ou les noms)
Un champ peut contenir un astérisque (*), qui correspond à l'intervalle
``premier-dernier''
Les intervalles de nombres sont permis. Il se présentent sous forme
de deux nombres séparés par un tiret. Les bornes sont inclues. Par exemple,
l'intervalle horaire 8-11 correspond à une exécution aux heures 8, 9, 10, et 11.
Les listes sont permises. Une liste est une série de nombres ou d'intervalles
séparés par des virgules. Exemple ``1,2,5,9'', ``0-4,8-12''.
Des valeurs de "pas" peuvent être associées aux intervalles. A la suite
d'un intervalle, un ``/nombre'' précise le pas à adopter pour parcourir
l'intervalle. Par exemple ``0-23/2'' dans le champ horaire demande
une exécution toutes les heures paires. Une alternative avec le standard
V7 serait ``0,2,4,6,8,10,12,14,16,18,20,22''). Les pas sont également
autorisés à la suite d'un astérisque, ainsi, pour dire
``toutes les deux heures'', on peut utiliser ``*/2''.
On peut employer les noms des mois ou des jours de la semaine, en
utilisant les trois premières lettres (pas de différence majuscule/minuscule).
Les intervalles, ou les listes de noms ne sont pas acceptés.
Le sixième champ (le reste de la ligne) indique la commande à exécuter.
Tout le reste de la ligne, jusqu'au retour chariot ou au caractère %,
sera exécuté par /bin/sh, ou par le shell mentionné dans la variable
SHELL du fichier cron.
Les signes pourcentages (%) dans les commandes seront transformés en
retour-chariot, sauf s'ils sont précédés par un backslash (\). Toutes
les données se trouvant à la suite du premier % seront transmises
à la commande sur son entrée standard.
Note: Le jour d'exécution d'une commande peut être spécifié part deux
champs (jour du mois, et jour de la semaine). Si les deux champs sont
remplis (c.-à-d. pas *), la commande sera lancée quand
l'un
des champs correspond à la date en cours. Par exemple
``30 4 1,15 * 5''
exécutera une commande à 4:30 du matin les 1er et 15 de chaque mois, ET
chaque Vendredi.
Dans l'utilisation du jour de la semaine, le 0 et le 7 correspondent tous deux
au Dimanche.
BSD et ATT ne sont pas tout à fait d'accord là-dessus.
On autorise les intervalles et les listes dans le même champs.
"1-3,7-9" sera rejeté par le cron ATT ou BSD, ils n'acceptent que "1-3" ou "7,8,9".
Les intervalles peuvent inclure des "pas", ainsi "1-9/2"
équivaut à "1,3,5,7,9".
Les noms des mois ou des jours de la semaine peuvent être utilisés.
Les variables d'environnement peuvent être configurées dans la crontab.
Avec BSD ou ATT, les environnements transmis aux processus fils
sont globalement ceux de /etc/rc.
La sortie des commandes est normalement envoyée au propriétaire de la crontab
(pas sous BSD), mais peut être dirigée vers une autre personne (pas sous SysV),
ou l'on peut empêcher toute redirection du courrier (pas sous SysV non plus).
Christophe Blaess, 1999-2003.