Provided by: manpages-fr-extra_20151231_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 cinq 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. La taille maximale permise
       pour le champ de commande est de 998 caractères.

       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ées 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.