Available in

(1) (5) (1)/fi (1)/fr (5)/fr (1)/ja (5)/ja (1)/ko (5)/ko (1)/pl (5)/pl (1)/tr (5)/tr

Contents

NOM

crontab − Tables permettant de gérer le démon 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 d’invoquer explicitement su(1) dans une commande cron.

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 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 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 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 facultatives, et où tous les espaces ultérieures dans valeur feront partie intégrante de la valeur affectée à la variable nom. La chaîne de valeur peut être inscrite entre guillemets simples ou doubles afin de protéger les blancs initiaux et finaux. La chaîne valeur ne supporte pas les substitutions environnementales, ainsi une ligne comme

PATH = $HOME/bin:$PATH

ne fonctionnera pas comme attendu.

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. PATH est définie à « /usr/bin:/bin ». HOME, SHELL et PATH peuvent être réaffectées explicitement dans la crontab contrairement à LOGNAME, qui est l’utilisateur ayant lancé la tâche.

(Note : 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) prendra en compte 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’utilisateur indiqué. MAILTO peut aussi servir à envoyer les courriers à plusieurs destinataires en séparant les destinataires par une virgule. Si MAILTO est définie mais vide (MAILTO=""), aucun courriel ne sera envoyé. Sinon, le courriel sera envoyé au propriétaire de la crontab.

Sur les systèmes Debian GNU/Linux, cron gère le module pam_env et charge les variables d’environnement des fichiers /etc/environment et /etc/security/pam_env.conf. Toutefois les réglages de PAM n’affectent pas les réglages décrits ci−dessus ni la configuration dans le fichier crontab. Veuillez noter en particulier que si vous voulez un autre PATH que « /usr/bin:/bin », vous devrez le mentionner dans le fichier crontab.

Par défaut, cron envoie le courrier en utilisant l’en−tête "Content−type" de "text/plain" avec comme valeur du paramètre "charset=" l’encodage utilisé par crond(8) à son lancement, i.e. soit la locale par défaut du système si aucune variable d’environnement LC_* n’est attribuée, soit la locale spécifiée par ces variables LC_* (voir locale(7)). Vous pouvez utiliser un autre codage de caractères pour les messages envoyés par cron en positionnant les variables CONTENT_TYPE et CONTENT_TRANSFER_ENCODING dans vos crontabs aux valeurs souhaitées des en−têtes de message correspondants.

Le format d’une commande cron est très proche du standard V7, avec quelques options permettant de garder une compatibilité ascendante. Chaque ligne dispose de 5 champs de date et d’heure, suivis d’une commande et enfin d’un retour à la ligne (« \n »). Le système crontab (/etc/crontab) utilise le même format, si ce n’est que le champ utilisateur est indiqué après les champs de date et d’heure mais avant la commande. Les champs peuvent être séparés par des espaces ou des tabulations.

Les commandes sont exécutées par cron(8) lorsque les champs minute, heure et mois de l’année correspondent à la date actuelle, et lorsqu’au moins l’un des deux champs jour (jour du mois ou jour de la semaine) correspond au jour actuel (voir « Note » ci−dessous). cron(8) examine les entrées cron chaque minute. Les champs d’heure et de date sont :

champ

valeurs autorisées

−−−−−

−−−−−−−−−−−−−−

minute

0−59

heure

0−23

jour du mois

1−31

mois

1−12 (ou noms, voir ci−dessous)

jour de semaine 0−7 (0 et 7 pour dimanche, ou utiliser les noms)

Un champ peut contenir un astérisque « * », qui correspond à 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 incluses. 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 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 le nom des mois ou des jours de la semaine (en anglais), 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 pourcent (%) dans les commandes seront transformés en retour−chariot, sauf s’ils sont précédé par un backslash \. Toutes les données se trouvant à la suite du premier % seront transmises à la commande sur son entrée standard. Il n’est pas possible d’écrire une commande sur plusieurs lignes, comme on le ferait dans un shell avec le \ final.

Note : le jour d’exécution d’une commande peut être spécifié par deux champs (jour du mois, et jour de la semaine). Si les deux champs sont remplis (c.−à−d. différents de « * »), la commande sera lancée quand l’un des champs au moins correspond à la date en cours. 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.

À la place des cinq premiers champs peut apparaître l’une des huit chaînes spéciales :

chaîne

signification

−−−−−−

−−−−−−−

@reboot

Exécuter une fois au démarrage.

@yearly

Exécuter une fois par an, « 0 0 1 1 * ».

@annually

(idem que @yearly)

@monthly

Exécuter une fois par mois, « 0 0 1 * * ».

@weekly

Exécuter une fois par semaine, « 0 0 * * 0 ».

@daily

Exécuter une fois par jour, « 0 0 * * * ».

@midnight

(idem que @daily)

@hourly

Exécuter une fois par heure, « 0 * * * * ».

EXEMPLE DE FICHIER CRONTAB

# Utiliser /bin/bash pour lancer les commandes, plutôt que le shell par
# défaut /bin/sh
SHELL=/bin/bash
# Envoyer les résultats à Paul, sans tenir compte du propriétaire
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
# Énerver 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 "Tous les jours, 23 mn après 0 h, 2 h, 4 h..."
5 4 * * sun echo "Tous les dimanches à 4 h 05"

EXEMPLE DE FICHIER SYSTÈME CRON

Le champ utilisateur est présent, il est utilisé comme dans le fichier /etc/crontab.
# /etc/crontab: crontab du système
# A la différence des autres crontabs, vous n’avez pas besoin d’exécuter
# la commande crontab pour installer la nouvelle version quand vous
# modifiez ce fichier. Ce fichier possède aussi un champ utilisateur que
# les autres crontabs n’ont pas.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow utilisateur commande
42 6 * * * root run−parts −−report /etc/cron.daily
47 6 * * 7 root run−parts −−report /etc/cron.weekly
52 6 1 * * root run−parts −−report /etc/cron.monthly
#
# Supprime l’invocation d’anacron, puisque cela est maintenant géré par
# un fichier dans /etc/cron.d

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. BSD et AT&T ne sont pas entièrement d’accord là−dessus.

On autorise les intervalles et les listes dans le même champ. « 1−3,7−9 » sera rejeté par le cron AT&T 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 ».

Le nom des mois ou des jours de la semaine peut être utilisé.

Les variables d’environnement peuvent être définies dans la crontab. Avec BSD ou AT&T, l’environnement transmis aux processus fils est globalement celui 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 courriel ne sera envoyé (pas sous SysV non plus).

Toutes les commandes « @ » qui peuvent apparaître dans l’un des cinq premiers champs sont des extensions.

AUTEUR

Paul Vixie <paul [AT] vix.com>

TRADUCTION

Cette page de manuel a été traduite et mise à jour par Christophe Blaess entre 1997 et 2003. La version présente dans Debian est dorénavant maintenue par Steve Petruzzello <dlist AT bluewin DOT ch> et les membres de la liste <debian−l10n−french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages−fr−extra.

COMMENTS

blog comments powered by Disqus