CRONTAB(5) Manuel de l'administrateur Linux CRONTAB(5)
NOM
crontab(1,5) - Table permettant de gérer le démon Cron.
DESCRIPTION
Un fichier crontab(1,5) contient des instructions pour le démon cron(8).
Ces instructions ont la forme générale suivante : ``lancer cette com-
mande à telle heure, tel jour''. Chaque utilisateur dispose de sa
propre table crontab(1,5), 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 pro-
pres 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 égale-
ment 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 affec-
tation de variable d'environnement.
Une ligne active dans une crontab(1,5) 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(1,5) correspondant au
propriétaire de la crontab. HOME et SHELL peuvent être surchargés
par des affectations explicites dans la crontab(1,5), 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 vari-
able 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(1,8) comme agent à la
place de /usr/lib/sendmail(1,8) lorsque vous installez cron. /bin/mail(1,8) 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(1,5) 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) corre-
spond 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'inter-
valle ``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 exem-
ple, 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 util-
isant les trois premières lettres (pas de différence majuscule/minus-
cule). Les intervalles, ou les listes de noms ne sont pas accept(2,8)é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.
EXEMPLE DE FICHIER CRONTAB
# utiliser /bin/sh pour lancer les commandes, quoiqu'en dise /etc/passwd.
SHELL=/bin/sh
# Envoyer les résultats à Paul, sans tenir compte du propriétaire
MAILTO=paul
#
# Chaque jour, 5 minutes après Minuit
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# Le premier de chaque mois à 14h15 - Résultat envoyé à Paul
15 14 1 * * $HOME/bin/monthly
# Les jours de la semaine à 22h, énerver Joe
0 22 * * 1-5 mail(1,8) -s "Il est 22h" joe%Joe,%%Où sont tes enfants ?%
23 0-23/2 * * * echo(1,3x,1 builtins) "Tous les jours, à 23mn après 0h, 2h, 4h..."
5 4 * * sun echo(1,3x,1 builtins) "Tous les dimanches à 4h 05"
VOIR AUSSI
cron(8), crontab(1,5)(1)
EXTENSIONS
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(1,5) (pas sous BSD), mais peut être dirigée vers une autre per-
sonne (pas sous SysV), ou l'on peut empêcher toute redirection du
courrier (pas sous SysV non plus).
AUTEUR
Paul Vixie <paul@vix.com>
TRADUCTION
Christophe Blaess, 1999-2003.
Vixie-cron 25 juillet 2003 CRONTAB(5)