.\" -*- coding: UTF-8 -*- .\"/* Copyright 1988,1990,1993,1994 by Paul Vixie .\" * All rights reserved .\" * .\" * Distribute freely, except: don't remove my name from the source or .\" * documentation (don't take credit for my work), mark your changes (don't .\" * get me blamed for your possible bugs), don't alter or remove this .\" * notice. May be sold if buildable source is provided to buyer. No .\" * warrantee of any kind, express or implied, is included with this .\" * software; use at your own risk, responsibility for damages (if any) to .\" * anyone resulting from the use of this software rests entirely with the .\" * user. .\" * .\" * Send bug reports, bug fixes, enhancements, requests, flames, etc., and .\" * I'll try to keep a version up to date. I can be reached as follows: .\" * Paul Vixie uunet!decwrl!vixie!paul .\" */ .\" .\" $Id: crontab.5,v 2.4 1994/01/15 20:43:43 vixie Exp $ .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH CRONTAB 5 "19 Avril 2010" .UC 4 .SH NOM crontab — Tables permettant de gérer le démon de cron .SH DESCRIPTION Un fichier \fIcrontab\fP contient des instructions pour le démon \fBcron\fP(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 \fIcrontab\fPs, ce qui évite de devoir invoquer explicitement \fBsu\fP(1) dans une commande \fBcron\fP(8). .PP Notez que les commentaires situés sur la même ligne que la commande \fBcron\fP(8) ne sont pas interprétés comme des commentaires au sens de \fBcron\fP(8), mais sont considérés comme faisant partie de la commande et transmis à l'interpréteur de commande. Il en est pratiquement de même pour les commentaires situés sur la même ligne qu'une définition de variable d'environnement. .PP Une ligne active dans une \fIcrontab\fP sera soit une affectation de variable d'environnement, soit une commande \fBcron\fP(8). Une ligne d'affectation d'environnement est de la forme\ : .PP nom = valeur .PP où les espaces autour du signe égal «\ =\ » sont facultatives et où toutes les espaces ultérieures dans \fIvaleur\fP feront partie intégrante de la valeur affectée à la variable \fInom\fP. La chaîne \fIvaleur\fP peut être inscrite entre guillemets (simples ou doubles mais correspondants) afin de conserver les espaces initiales et finales. Les guillemets sont \fBnécessaires\fP pour définir les variables vides. .PP La chaîne \fIvaleur\fP n'est \fBpas\fP interprétée pour les substitutions environnementales, le remplacement de variables ou le raccourci tilde(~), si bien que des lignes comme\ : .PP .in +4n .nf PATH=$HOME/bin:$PATH PATH=~/bin:/usr/bin .fi .in .PP ne fonctionneront pas comme vous vous y attendez. Celles\-ci ne fonctionneront pas non plus\ : .PP .in +4n .nf A=1 B=2 C=$A $B .fi .in .PP Il n'y aura pas de substitution pour les variables définies dans la dernière valeur. Avec la plupart des interpréteurs de commande, vous pouvez cependant aussi essayer par exemple\ : .PP P=PATH=/a/b/c:$PATH 33 22 1 2 3 eval $P && commandes .PP Plusieurs variables d'environnement sont automatiquement définies par le démon \fBcron\fP(8). \fISHELL\fP prend la valeur «\ /usr/bin/sh\ », \fILOGNAME\fP et \fIHOME\fP sont définies à partir de la ligne de \fI/etc/passwd\fP correspondant au propriétaire de la \fIcrontab\fP. \fIHOME\fP et \fISHELL\fP peuvent être réaffectées explicitement dans la crontab, contrairement à \fILOGNAME\fP qui ne peut l'être. .PP Remarque\ : la variable \fILOGNAME\fP est parfois nommée \fIUSER\fP sur les systèmes BSD. Sur ces systèmes, \fIUSER\fP doit aussi être définie. .PP En plus de \fILOGNAME\fP, \fIHOME\fP et \fISHELL\fP, \fBcron\fP(8) consultera la variable \fIMAILTO\fP s'il doit envoyer le résultat d'une commande exécutée depuis «\ cette\ » \fIcrontab\fP. Si \fIMAILTO\fP est définie (et non vide), le résultat est envoyé à l'adresse indiquée. Si \fIMAILTO\fP est définie mais vide (\fIMAILTO=""\fP), aucun courrier ne sera envoyé. Sinon, le courrier sera envoyé au propriétaire de la \fIcrontab\fP. Cette option est utile si vous décidez d'utiliser \fI/usr/bin/mail\fP comme expéditeur de messages à la place de \fI/usr/lib/sendmail\fP lorsque vous installez \fBcron\fP(8). Notez cependant que \fI/usr/bin/mail\fP ne prend pas en charge les alias et qu'UUCP ne lit en général pas ses messages. .PP Le format d'une commande \fBcron\fP(8) est très proche de la norme V7, avec quelques extensions 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 («\ \en\ »). La crontab système (\fI/etc/crontab\fP) 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. .PP Les commandes sont exécutées par \fBcron\fP(8) quand les champs «\ minute\ », «\ heure\ » et «\ mois de l'année\ » correspondent à la date actuelle, \fIet\fP au moins un des deux champs «\ jour\ » («\ jour du mois\ » ou «\ jour de la semaine\ ») correspond à la date actuelle (voir la remarque ci\-après). \fIcron\fP(8) examine les entrées cron chaque minute. Les champs heure et date sont\ : .IP .ta 1.5i champ valeurs autorisées .br \-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\- .br minute 0\-59 .br heure 0\-23 .br jour du mois 0\-31 .br mois 0\-12 (ou noms, voir ci\-dessous) .br jour de la semaine 0\-7 (0 ou 7 pour dimanche, ou utiliser des noms) .br .PP Un champ peut contenir seulement un astérisque «\ \fB*\fP\ », qui correspond toujours à l'intervalle «\ premier\-dernier\ ». .PP 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. .PP 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\ ». .PP Des valeurs de «\ pas\ » peuvent être associées aux intervalles. À la suite d'un intervalle, un «\ \fB/\fP\fInombre\fP\ » précise le pas à adopter pour parcourir l'intervalle. Par exemple «\ 0\-23/2\ » dans le champ heure demande une exécution toutes les heures paires. Une alternative avec la norme 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\ ». .PP 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 capitale/minuscule). Les intervalles ou les listes de noms ne sont pas acceptés. .PP Le sixième champ (le reste de la ligne) indique la commande à exécuter. Tout le reste de la ligne, jusqu'au caractère nouvelle ligne ou au caractère «\ %\ », sera exécuté par \fB/usr/bin/sh\fP ou par l'interpréteur de commande mentionné dans la variable \fISHELL\fP du fichier \fBcron\fP(8). Les caractères pourcentage «\ %\ » dans les commandes seront transformés en caractères nouvelle ligne, sauf s'ils sont précédés d'une barre oblique inversée «\ \e\ ». Toutes les données se trouvant à la suite du premier «\ %\ » seront transmises à la commande sur son entrée standard. .PP 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 renseignés (c'est\-à\-dire différents de «\ *\ »), la commande sera lancée quand \fIau moins un\fP des champs correspondra à la date actuelle. Par exemple, .br «\ 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 \fBEXEMPLE DE FICHIER CRONTAB\fP plus bas). .PP À la place des cinq premiers champs, on peut trouver une des huit chaînes suivantes\ : .IP .ta 1.5i chaîne signification .br \-\-\-\-\-\- \-\-\-\-\-\-\- .br @reboot Exécuter une fois au démarrage. .br @yearly Exécuter une fois par an, "0 0 1 1 *". .br @annually (identique à @yearly) .br @monthly Exécuter une fois par mois "0 0 1 * *". .br @weekly Exécuter une fois par semaine, "0 0 * * 0". .br @daily Exécuter une fois par jour, "0 0 * * *". .br @midnight (identique à @daily) .br @hourly Exécuter une fois par heure, "0 * * * *". .br .PP Veuillez noter que «\ démarrage\ », dans le cas de @reboot, correspond au moment où le démon de \fIcron\fP(8) démarre. En particulier, il peut se situer avant le démarrage de certains démons système ou autres services. Cela dépend de l'ordonnancement de la séquence de démarrage de la machine. .SH "EXEMPLE DE FICHIER CRON" .nf # Utiliser /usr/bin/sh pour lancer les commandes, sans tenir compte de ce que dit /etc/passwd SHELL=/usr/bin/sh # Envoyer les résultats à Paul, sans tenir compte du propriétaire de la crontab 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 # Asticoter 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 "exécuter tous les jours, 23\ mn après 0\ h, 2\ h, 4\ h…" 5 4 * * sun echo "exécuter tous les dimanches à 4\ h\ 05" 0 */4 1 * mon echo "exécuter toutes les 4 heures le premier du mois et tous les lundis" 0 0 */2 * sun echo "exécuter à minuit tous les dimanches dont la date est impaire" # Exécuter tous les deuxièmes samedis du mois 0 4 8\-14 * * test $(date +\e%u) \-eq 6 && echo "deuxième samedi" # Même chose, aussi efficace : 0 4 * * * Sat d=$(date +\%e) && test $d \-ge 8 \-a $d \-le 14 && echo "deuxième samedi" # Exécuter tôt le lendemain du premier jeudi de chaque mois 57 2 * * 5 case $(date +\%d) in 0[2\-8]) echo "Après le premier jeudi"; esac .fi .PP Tous les exemples ci\-dessus exécutent des programmes non interactifs. Si vous souhaitez exécuter un programme qui interagit avec le bureau de l'utilisateur, vous devez vous assurer que la variable d'environnement \fIDISPLAY\fP est correctement définie. .\" Note: Based on some web searches, below example might not fully .\" work in all systems, as notify-send might require also .\" to have knowledge of the dbus session in use (through the environment) .\" However, adding that code here is an overkill .nf # Exécuter un programme et envoyer une notification chaque jour à 10:00 0 10 * * * $HOME/bin/program | DISPLAY=:0 notify\-send "Exécution programme" "$(cat)" .fi .SH "EXEMPLE DE FICHIER CRONTAB SYSTÈME" Vous trouverez dans ce qui suit le contenu d'un fichier \fIcrontab\fP ordinaire valable pour l'ensemble du système. À la différence du fichier \fIcrontab\fP d'un utilisateur, ce fichier comporte un champ «\ nom_utilisateur\ », tel qu'utilisé par \fI/etc/crontab\fP. .nf # /etc/crontab\ : fichier crontab valable pour tout le système # À la différence des autres crontabs, vous n'avez pas besoin # d'exécuter la commande «\ crontab\ » pour installer une nouvelle # version de ce fichier et des fichiers dans /etc/cron.d. Ces # fichiers possèdent aussi des champs nom_utilisateur, alors que # les autres crontabs n'en possèdent pas. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Exemple de définition d'une tâche : # .\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- minute (0 \- 59) # | .\-\-\-\-\-\-\-\-\-\-\-\-\- heure (0 \- 23) # | | .\-\-\-\-\-\-\-\-\-\- jour du mois (1 \- 31) # | | | .\-\-\-\-\-\-\- mois (1 \- 12) OU jan,feb,mar,apr ... # | | | | .\-\-\-\- jour de semaine (0 \- 6) (Dimanche=0 ou 7) OU sun,mon,tue,wed,thu,fri,sat # | | | | | # m h dom mon dow utilisateur commande 17 * * * * root cd / && run\-parts \-\-report /etc/cron.hourly 25 6 * * * root test \-x /usr/sbin/anacron || ( cd / && run\-parts \-\-report /etc/cron.daily ) 47 6 * * 7 root test \-x /usr/sbin/anacron || ( cd / && run\-parts \-\-report /etc/cron.weekly ) 52 6 1 * * root test \-x /usr/sbin/anacron || ( cd / && run\-parts \-\-report /etc/cron.monthly ) # .fi Notez que toutes les tâches valables pour tout le système vont s'exécuter, par défaut, de 06:00 à 07:00. Si le système est hors tension pendant ce créneau, seules les tâches horaires seront exécutées, à moins que les réglages par défaut ci\-dessus ne soient modifiés. .SH "ENCORE UN AUTRE EXEMPLE" Cet exemple montre que l'on peut faire précéder les nombres d'un certain nombre de\ 0 de façon à aligner les colonnes. .nf 17 * * * * root cd / && run\-parts \-\-report /etc/cron.hourly 25 16 * * * root test \-x /usr/sbin/anacron || ( cd / && run\-parts \-\-report /etc/cron.daily ) 47 06 * * 7 root test \-x /usr/sbin/anacron || ( cd / && run\-parts \-\-report /etc/cron.weekly ) 52 06 1 * * root test \-x /usr/sbin/anacron || ( cd / && run\-parts \-\-report /etc/cron.monthly ) .fi .SH "VOIR AUSSI" \fBcron\fP(8), \fBcrontab\fP(1) .SH EXTENSIONS Dans la désignation du jour de la semaine, le\ 0 et le\ 7 correspondent tous deux au dimanche, ce avec quoi BSD et AT&T semblent ne pas être d'accord. .PP Les intervalles et les listes sont autorisés dans un même champ. «\ 1\-3,7\-9\ » sera cependant rejeté par le \fBcron\fP(8) AT&T ou BSD, car il n'accepte que «\ 1\-3\ » ou «\ 7,8,9\ » SEULS. .PP Les intervalles peuvent inclure des «\ pas\ », ainsi «\ 1\-9/2\ » équivaut à «\ 1,3,5,7,9\ ». .PP Les mois et les jours de la semaine peuvent être spécifiés à l'aide leurs noms. .PP Les variables d'environnement peuvent être définies dans la crontab. Avec BSD ou AT&T, l'environnement transmis aux processus enfants est globalement celui issu de /etc/rc. .PP La sortie des commandes est soit envoyée au propriétaire de la \fIcrontab\fP (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). .PP Toutes les commandes «\ @\ » qui peuvent apparaître à la place d'un des cinq premiers champs sont des extensions. .SH LIMITES Le démon \fIcron\fP s'exécute avec un fuseau horaire défini. Il ne prend actuellement pas en charge les fuseaux horaires par utilisateur. Toutes les tâches, celles du système et celles de l'utilisateur, seront exécutées en tenant compte du fuseau horaire défini. Même si un utilisateur définit la variable d'environnement \fITZ\fP dans sa \fIcrontab\fP, cela n'affectera que les commandes exécutées dans la \fIcrontab\fP, pas le moment d'exécution des tâches de la \fIcrontab\fP elles\-mêmes. Si on veut spécifier un fuseau horaire particulier pour une tâche de la \fIcrontab\fP, il faut tester la date dans un script enfant, comme dans cet exemple\ : .nf # m h dom mon dow commande TZ=UTC 0 * * * * [ "$(date +\e%R)" = 00:00 ] && exécuter_un_script .fi La norme POSIX spécifie que les deux champs jour_du_mois et jour_de_la_semaine doivent correspondre à l'heure actuelle si le contenu d'un des deux \fIest égal\fP à «\ *\ ». Cependant cette implémentation vérifie seulement si le \fIpremier caractère\fP est «\ *\ ». C'est pourquoi «\ 0 0 */2 * sun\ » lancera la tâche correspondante tous les dimanches dont la date est impaire, alors qu'avec la norme POSIX, la tâche aurait été lancée tous les dimanches et à chaque date impaire. La syntaxe de la \fIcrontab\fP ne permet pas de définir toutes les périodes possibles et imaginables. Par exemple, il n'est pas évident de définir le dernier jour de la semaine d'un mois donné. Pour qu'une tâche s'exécute à une période qui ne peut pas être définie en utilisant la syntaxe de la \fIcrontab\fP, la meilleure approche consiste à faire tester la date et l'heure par le programme lui\-même et à ne continuer l'exécution que si la période correspond à celle que l'on souhaite. Si le programme ne peut pas faire les tests lui\-même, un script d'enveloppe sera peut\-être nécessaire. \fIncal\fP et \fIcalendar\fP sont des outils qui peuvent faciliter les analyses de dates. Par exemple, pour exécuter un programme le dernier samedi de chaque mois, vous pourriez utiliser le code d'enveloppe suivant\ : .nf 0 4 * * Sat [ "$(date +\e%e)" = "$(LANG=C ncal | sed \-n 's/^Sa .* \e([0\-9]\e+\e) *$/\e1/p')" ] && echo "Dernier samedi" && programme_à_exécuter .fi .SH "UTILISER EVAL POUR ENCAPSULER DIVERSES DÉFINITIONS DE L'ENVIRONNEMENT" L'exemple suivant est fourni gracieusement par 積丹尼 Dan Jacobson\ : .PP CONTENT_TYPE="text/plain; charset=UTF\-8" d=eval LANG=zh_TW.UTF\-8 w3m \-dump 26 22 16 1\-12 * $d https://www.ptt.cc/bbs/transgender/index.html .PP cela ne fonctionnera pas sans eval. Taper d=LANG=zh_TW.UTF\-8 w3m \-dump aboutira à /bin/sh: LANG=zh_TW.UTF\-8: command not found .SH DIAGNOSTICS Chaque entrée d'une \fIcrontab\fP doit être terminée par un caractère nouvelle ligne. Si la dernière entrée d'une crontab ne se termine pas par un retour à la ligne (autrement dit se termine par EOF), \fBcron\fP la considérera (au moins partiellement) corrompue. Un avertissement sera écrit dans le journal système («\ syslog\ »). .SH AUTEUR Paul Vixie est l'auteur de \fBcron\fP(8) et le créateur de cette page de manuel. Cette page a ensuite été modifiée pour Debian par Steve Greenland, Javier Fernandez\-Sanguino, Christian Kastner, Christian Pekeler et Georges Khaznadar. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Steve Petruzzello , Nicolas François , David Prévot et Lucien Gentis . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .