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.

4th Berkeley Distribution                         19 avril 2010                                       CRONTAB(5)