CRONTAB(5)        Formats de fichiers de FreeBSD

 

NOM

crontab - les tables qui dirigent cron

 

DESCRIPTION

 

Un fichier crontab contient les instructions du démon cron(8) sous la forme générale : "exécuter cette commande à cette heure et à cette date". Chaque utilisateur possède sa propre crontab et les commandes d'une crontab donnée s'exécutent au nom du possesseur de celle-ci. Uucp et News ont généralement leur propre crontabs, cela dispense de lancer su(1) explicitement dans une commande cron.

 

Les lignes vides, les espaces en début de ligne et les tabulations sont ignorées. Les lignes dont le premier caractère autre que blanc est un dièse (#) sont des commentaires et ne sont pas prises en compte. Notez que les commentaires ne sont pas autorisés en cours de ligne de commande car ils seraient pris pour des parties de la commande. De même, sur les lignes de définitions des variables d'environnement.

 

Une ligne active, dans la crontab, est soit une définition d'environnement soit une commande cron. Une définition d'environnement est de la forme :

 

nom = valeur

 

où les espaces autour du égal (=) sont optionnels et ceux après la valeur font partie de la valeur assignée à nom. Une chaîne de caractères peut être placée entre cottes (soit simples soit doubles mais pas mélangées) afin de tenir compte des espaces en début et fin de chaîne.

 

Certaines variables d'environnement sont automatiquement définies par le démon cron(8). SHELL est mis à /bin/sh et LOGNAME et HOME sont pris dans /etc/passwd à la ligne du possesseur de la crontab. HOME et SHELL peuvent être redéfinies dans la table mais pas LOGNAME.

 

(Autre note : La variable LOGNAME est parfois appelée USER sur des systèmes BSD... USER sera alors définie également).

 

En plus de LOGNAME, HOME et SHELL, cron(8) regarde MAILTO pour savoir s'il faut envoyer le résultat d'une commande de "cette" crontab par courriel. Si MAILTO est définie (et non-vide), le courriel est envoyé à cette adresse. Si MAILTO est définie mais vide (MAILTO="") aucun courriel n'est envoyé. Sinon, le courriel est envoyé au possesseur de la crontab. Cette option est utile si vous décidez que votre mailleur est /bin/mail au lieu de /usr/lib/sendmail quand vous installez cron (/bin/mail ne gère pas les alias et UUCP ne lit généralement pas son courriel).

 

Le format d'une commande cron est entièrement au standard V7 mais accepte nombre d'extensions évoluées. Chaque ligne est formée de cinq champs heure et date, suivis d'un nom d'utilisateur (avec en option les suffixes ":<groupe>" et "/<login-class>") si c'est une crontab système, puis d'une commande. Les commandes sont exécutées par cron(8) quand la minute, l'heure et le mois de l'année correspondent à l'heure actuelle et qu'au moins un des deux champs jours (jour du mois ou de la semaine) correspond au jour présent (voir note plus loin). cron(8) examine les entrées cron une fois par minute. Les champs heure et date sont :

 

champ         valeurs autorisées
-----         ------------------
minute        0-59
heure         0-23
jour du mois  1-31
mois          1-12 (ou les noms, voir plus loin)
jour de la    0-7 (0 ou 7 est dim ou utilisez les noms)
 semaine

 

Un champ peut être un astérisque (*), cela correspond à "début-fin".

 

Les intervalles de nombres sont autorisés. Ils s'écrivent par deux nombres séparés par un tiret. L'intervalle est inclusif. Par exemple, "8-11", pour les heures, veut dire d'exécuter à 8, 9, 10 et 11 heures.

 

Les listes sont autorisées. Il s'agit d'une suite de nombres (ou d'intervalles) séparés par une virgule. Exemples : "1,2,5,9", "0-4,8-12".

 

Des pas peuvent être utilisés avec les intervalles. Faire suivre un intervalle de "/<nombre>" spécifie de sauter de la valeur du nombre dans l'intervalle. Par exemple, "0-23/2", dans le champs des heures, spécifie l'exécution toutes les heures paires (ou, au standard V7 : "0,2,4,6,8,10,12,14,16,18,20,22"). Les pas sont aussi autorisés après un astérisque. Si vous voulez dire "toutes les deux heures", écrivez simplement "*/2".

 

Les noms peuvent aussi être utilisés pour les champs "mois" et "jour de la semaine". Utilisez les trois premières lettres du jour ou du mois (en anglais. Majuscule ou minuscule, peut importe). Les intervalles et les listes de noms ne sont pas permis.

 

Le "sixième" champ (le reste de la ligne) indique la commande à exécuter. La partie complète de ce champ, jusqu'au saut de ligne ou au caractère %, sera exécutée par /bin/sh ou par l'interpréteur défini par la variable SHELL dans ce fichier cron. Le "pourcent" (%) de la commande, à moins d'être précédé d'un "anti-slash" (\), sera changé en caractère saut de ligne et toutes les données suivant le premier % seront envoyés à la commande comme dans une saisie normale.

 

Note : Le jour d'exécution d'une commande peut être défini par deux champs (jour du mois et jour de la semaine). Si les deux sont restreints (c'est à dire différents de *), alors la commande sera exécutée si au moins un des champs correspond au jour présent. Par exemple, "30 4 1,15 * 5" lancera la commande à 4:30 du matin, le premier et 15 de chaque mois, plus chaque jeudi.

 

EXEMPLE DE FICHIER CRON

#utiliser /bin/sh pour lancer la commande
#qu'importe ce que dit le fichier /etc/passwd
SHELL = /bin/sh
#Émailler les résultats à "paul" quelque soit le propriétaire de la crontab
MAILTO=paul
#
# Lancer cinq minutes après minuit, chaque jour
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
#Lancer à 14:15 le premier de chaque mois (résultats envoyés à paul)
15 14 1 * * $HOME/bin/monthly
#lancer "annoy joe" à 22:00 en semaine
0 22 * * 1-5 mail -s "Il est 22:00" joe%Joe,%%Où sont tes enfants?%
23 0-23/2 * * * echo "tourne 23 min après minuit, 2h, 4h ..., tous les jours"
5 4 * * sun echo "tourne à 4:05 le dimanche"

 

VOIR AUSSI

crontab(1), cron(8)

 

EXTENSIONS

Pour les jours de la semaine, le 0 et le 7 sont considérés comme étant dimanche. BSD et ATT n'ont pas l'air d'accord sur ce sujet.

 

Les listes et intervalles peuvent coexister dans le même champ. "1-3,7-9" sera rejeté par cron de ATT et de BSD. Il ne veulent voir QUE "1-3" ou "7,8,9".

 

Les intervalles acceptent les pas, donc "1-9/2" équivaut à "1,3,5,7,9".

 

Les mois et jours de la semaines peuvent être spécifiés par leurs noms.

 

Les variables d'environnement peuvent être définies dans la crontab. Dans BSD ou ATT, l'environnement donné au processus fils est exactement celui de /etc/rc.

 

Les résultats de commandes sont envoyés au possesseur de la crontab (BSD ne peut pas faire ça), peut être envoyé à une autre personne que le possesseur (SysV ne peut pas faire ça) ou bien cette fonction peut être désactivée et aucun courriel ne sera envoyé (SysV ne peut pas faire ça non plus).

 

AUTEURS

Paul Vixie <paul@vix.com>

Version française : Guillain Seuillot <Guillain@lycosmail.com>, mars 2000

 

BSD 24 janvier 1994