Provided by: manpages-fr-extra_20111118_all bug

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. Le fichier crontab est analysé du début à la fin,
       donc  les  configurations  d'environnement  n'affecteront  que  les commandes cron qui les
       suivent dans le fichier. 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 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. Les guillemets sont nécessaires pour définir les
       variables  vides.  La  chaîne  valeur  ne  permet  pas  les  substitutions   de   variable
       d'environnement ou le remplacement de variables, ainsi une ligne comme

           PATH = $HOME/bin:$PATH

       ne fonctionnera pas comme attendu. Tout comme ceci ne fonctionnera pas

           A=1
           B=2
           C=$A $B

       Il n'y aura pas de substitution pour les variables définies dans la dernière valeur.

       Une  alternative  à  la  définition  du chemin des commandes est d'utiliser le fait que de
       nombreux interpréteurs de commandes interprètent un tilde (« ~ »)  comme  substitution  de
       $HOME, ainsi si vous utilisez bash pour vos tâches, vous pouvez utiliser ceci :

            SHELL=/bin/bash
            PATH=~/bin:/usr/bin/:/bin

       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.

       (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) 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 courrier ne  sera  envoyé.
       Sinon, le courrier 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.   Les
       renseignements à propos des locales sont aussi lus dans /etc/default/locale. 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: text/plain »
       avec  comme  valeur  du  paramètre  « charset= »  l'encodage  utilisé  par  crond(8) à son
       lancement,  c'est-à-dire  soit  la  locale  par  défaut  du  système  si  aucune  variable
       d'environnement LC_* n'est attribuée, soit la locale indiquée par ces variables LC_* (voir
       locale(7)). Vous pouvez utiliser un autre encodage 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
       identifiant 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 « Remarque »
       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 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  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 pour  cent  « % »  dans
       les  commandes  seront transformés en retour chariot, 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. Il n'est pas possible d'écrire une
       commande sur plusieurs lignes, comme on le ferait dans un interpréteur avec la \ final.

       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 remplis (c'est-à-dire 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. Il est  toutefois  possible  d'obtenir  le  résultat  voulu  en
       ajoutant un test à la commande (voir le dernier exemple dans la section EXEMPLE DE FICHIER
       CRONTAB plus bas).

       À 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      (identique à @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      (identique à @daily)
              @hourly        Exécuter une fois par heure, « 0 * * * * ».

       Veillez noter que le démarrage, du point de vue de @reboot, est  le  moment  où  le  démon
       cron(8)  démarre.  En particulier, cela peut arriver avant le démarrage de certains démons
       ou autres systèmes. Cela dépend de l'ordre de démarrage de la machine.

EXEMPLE DE FICHIER CRONTAB

       L'exemple suivant présente le fichier crontab d'un utilisateur

       # 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"
       # Tous les deuxièmes samedis du mois
       0 4 8-14 * *    test $(date +%u) -eq 6 && echo "deuxième samedi"

EXEMPLE DE FICHIER SYSTÈME CRON

       L'exemple suivant présente le fichier crontab d'un système.  Contrairement  à  la  crontab
       d'un  utilisateur,  ce  fichier  contient  le  champ  identifiant,  comme  dans le fichier
       /etc/crontab.

       # /etc/crontab: crontab du système
       # À 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
       # identifiant 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 ident. 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
       #

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.

       Les  intervalles et les listes sont autorisées 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 courrier 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.

LIMITATIONS

       Le démon cron s'exécute dans un certain fuseau horaire. Il  ne  prend  pas  en  charge  la
       définition  d'un  fuseau  horaire  par  utilisateur.  Toutes les tâches, tâches système ou
       tâches d'utilisateurs, s'exécuteront en fonction du fuseau horaire configuré. Même  si  un
       utilisateur  définit  la variable d'environnement TZ dans sa crontab, ceci n'affectera que
       les commandes exécutée dans la tâche, pas l'exécution des tâches crontab elles-mêmes.

       La syntaxe de crontab ne permet pas  de  définir  tous  les  moments  possibles  que  l'on
       pourrait  imaginer. Par exemple, il n'est pas simple de définir le dernier jour de semaine
       du mois. Si une tâche doit être exécutée à un moment particulier  qui  ne  peut  pas  être
       défini  avec  la syntaxe de crontab, le meilleur moyen serait de faire vérifier la date et
       l'heure directement par le programme, et continuer l'exécution si elles  correspondent  au
       moment voulu.

       Si  le  programme  ne  peut  pas  vérifier  lui-même,  alors  un  script  enveloppe serait
       nécessaire. ncal et calendar sont des outils qui pourraient être pratiques  pour  analyser
       la  date. Par exemple, le code enveloppe suivant permet d'exécuter un programme le dernier
       samedi du mois. Attention, la commande est présentée sur plusieurs  lignes  par  commodité
       d'affichage, le fichier crontab n'accepte que les commandes sur une seule ligne.

       0 4 * * Sat  [ "$(date +e)" =
        "`ncal | grep $(date +a | sed  -e 's/.$//') | sed -e 's/^.*9]+$/1/'`"
        ] && echo "Dernier samedi" && programme_à_exécuter

DIAGNOSTICS

       Chaque  entrée  d'une  crontab doit être terminée par un retour à la ligne. Si la dernière
       entrée ne se termine pas par  un  retour  à  la  ligne,  cron  la  considérera  (au  moins
       partiellement) cassée. Un avertissement sera écrit dans le journal système (« syslog »).

AUTEUR

       Paul Vixie <paul@vix.com> est l'auteur de cron et de cette page de
       manuel. Cette page a ensuite été modifiée pour Debian par Steve
       Greenland, Javier Fernandez-Sanguino et Christian Kastner.

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.