Scroll to navigation

CRONTAB(5) File Formats Manual CRONTAB(5)

NOM

crontab — Tables permettant de gérer le démon de cron

DESCRIPTION

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 de devoir invoquer explicitement su(1) dans une commande cron(8).

Les lignes blanches, les espaces et tabulations en début de lignes sont ignorées. Les lignes dont le premier caractère non blanc est un croisillon « # » 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(8), car ils seraient considérés comme des paramètres de 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 sera soit une affectation de variable d'environnement, soit une commande cron(8). Une ligne d'affectation d'environnement est de la forme :


nom = valeur

où les espaces autour du signe égal « = » sont facultatives et où toutes les espaces ultérieures dans valeur font partie intégrante de la valeur affectée à la variable nom. La chaîne valeur peut être inscrite entre guillemets (simples ou doubles mais correspondants) afin de conserver les espaces initiales et finales.

Plusieurs variables d'environnement sont automatiquement définies par le démon cron(8). SHELL prend la valeur « /bin/sh », LOGNAME et HOME sont définies à partir de la ligne de /etc/passwd correspondant au propriétaire de la crontab. HOME et SHELL peuvent être réaffectées explicitement dans la crontab, contrairement à LOGNAME qui ne peut l'être.

Remarque : la variable LOGNAME est parfois nommée USER sur les systèmes BSD. Sur ces systèmes, USER doit aussi être définie.

En plus de LOGNAME, HOME et SHELL, cron(8) consultera la variable MAILTO s'il doit envoyer le résultat d'une commande exécutée depuis « cette » crontab. Si MAILTO est définie (et non vide), le résultat est envoyé à l'adresse indiquée. Si MAILTO est définie mais vide (MAILTO=""), aucun courrier ne sera envoyé. Sinon, le courrier sera envoyé au propriétaire de la crontab. Cette option est utile si vous décidez d'utiliser /bin/mail comme expéditeur de messages à la place de /usr/lib/sendmail lorsque vous installez cron(8). Notez cependant que /bin/mail ne prend pas en charge les alias et qu'UUCP ne lit en général pas ses messages.

Le format d'une commande cron(8) est très proche de la norme V7, avec quelques options permettant de garder une compatibilité ascendante. Chaque ligne dispose de cinq champs de date et d'heure, suivis d'un nom d'utilisateur s'il s'agit du fichier crontab du système, lui-même suivi d'une commande. Les commandes sont exécutées par cron(8) quand les champs « minute », « heure » et « mois de l'année » correspondent à la date actuelle, et au moins un des deux champs « jour » (« jour du mois » ou « jour de la semaine ») correspond à la date actuelle (voir la note qui suit). cron(8) examine les entrées cron chaque minute. Les champs heure et date sont :

champ valeurs autorisées
----- --------------
minute 0-59
heure 0-23
jour du mois 0-31
mois 0-12 (ou noms, voir ci-dessous)
jour de la semaine 0-7 (0 ou 7 pour dimanche, ou utiliser des noms)

Un champ peut contenir seulement un astérisque « * », qui correspond toujours à l'intervalle « premier-dernier ».

Les intervalles de nombres sont permis. Ils se présentent sous forme de deux nombres séparés par un trait d'union. Les bornes sont comprises. 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 un ensemble 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. À la suite d'un intervalle, un « /nombre » précise le pas à adopter pour parcourir l'intervalle. Par exemple « 0-23/2 » dans le champ heure demande une exécution toutes les heures paires. Une alternative avec la norme 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 le nom des mois ou des jours de la semaine (en anglais), en utilisant les trois premières lettres (pas de différence capitale/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 caractère nouvelle ligne ou au caractère « % », sera exécuté par /bin/sh ou par l'interpréteur de commande mentionné dans la variable SHELL du fichier cron(8). Les caractères pourcentage « % » dans les commandes seront transformés en caractères nouvelle ligne, sauf s'ils sont précédés d'une barre oblique inversée « \ ». Toutes les données se trouvant à la suite du premier « % » seront transmises à la commande sur son entrée standard.

Remarque : le jour d'exécution d'une commande peut être indiqué par deux champs (jour du mois et jour de la semaine). Si les deux champs sont renseignés (c'est-à-dire différents de « * »), la commande sera lancée quand au moins un des champs correspondra à la date actuelle. Par exemple,
« 30 4 1,15 * 5 » exécutera une commande à 4 h 30 du matin les 1er et 15 de chaque mois, ainsi que chaque vendredi.

EXEMPLE DE FICHIER CRON

# Utiliser /bin/sh pour lancer les commandes, quoi que dise /etc/passwd
SHELL=/bin/sh
# Envoyer les résultats à Paul, sans tenir compte du propriétaire de la crontab
MAILTO=paul
#
# Exécuter chaque jour, 5 minutes après minuit
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# Exécuter le premier de chaque mois à 14 h 15 - Résultat envoyé à Paul
15 14 1 * *     $HOME/bin/monthly
# Asticoter Joe du lundi au vendredi à 22 h
0 22 * * 1-5	mail -s "Il est 22 h" joe%Joe,%%Où sont tes enfants ?%
23 0-23/2 * * * echo "exécuter tous les jours, 23 mn après 0 h, 2 h, 4 h…"
5 4 * * sun     echo "exécuter tous les dimanches à 4 h 05"
# Exécuter une fois tous les neuf jours, même au-delà des limites de la semaine,
# du mois et de l'année :
33 22 * * *     expr $(date +s) / 60 / 60 / 24  9 > /dev/null || echo Cirez le plancher.

VOIR AUSSI

cron(8), crontab(1)

EXTENSIONS

Dans la désignation du jour de la semaine, le 0 et le 7 correspondent tous deux au dimanche, ce avec quoi BSD et ATT semblent ne pas être d'accord.

Les intervalles et les listes sont autorisés dans un même champ. « 1-3,7-9 » sera cependant rejeté par le cron(8) de ATT ou BSD, car il n'accepte que « 1-3 » ou « 7,8,9 » SEULS.

Les intervalles peuvent inclure des « pas », ainsi « 1-9/2 » équivaut à « 1,3,5,7,9 ».

Les mois et les jours de la semaine peuvent être spécifiés à l'aide de leurs noms.

Les variables d'environnement peuvent être définies dans la crontab. Avec BSD ou ATT, l'environnement transmis aux processus enfants est globalement celui issu de /etc/rc.

La sortie des commandes est soit envoyée au propriétaire de la crontab (pas sous BSD), soit dirigée vers une autre personne (pas sous SysV), soit la redirection est désactivée et aucun courrier ne sera envoyé (pas sous SysV non plus).

AUTEUR

Paul Vixie <paul@vix.com>

TRADUCTION

La traduction française de cette page de manuel a été créée par Steve Petruzzello <dlist@bluewin.ch>, Nicolas François <nicolas.francois@centraliens.net>, David Prévot <david@tilapin.org> et Lucien Gentis <lucien.gentis@waika9.com>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

24 janvier 1994 4th Berkeley Distribution