xenial (5) crontab.5.gz

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.