Provided by: manpages-fr_4.28.0-2_all 

NOM
crontab — Tables permettant de gérer le démon de 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 de devoir invoquer explicitement su(1) dans une commande cron(8).
Notez que les commentaires situés sur la même ligne que la commande cron(8) ne sont pas interprétés comme
des commentaires au sens de cron(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.
Une ligne active dans une crontab sera soit une affectation de variable d'environnement, soit une
commande cron(8). 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 valeur peut être
inscrite entre guillemets (simples ou doubles mais correspondants) afin de conserver les espaces
initiales et finales. Les guillemets peuvent être utilisés pour définir les variables vides.
La chaîne valeur n'est pas interprétée pour les substitutions environnementales, le remplacement de
variables ou le raccourci tilde(~), si bien que des lignes comme :
PATH=$HOME/bin:$PATH
PATH=~/bin:/usr/bin
will not work as you might expect. And neither will this work.
A=1
B=2
C=$A $B
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 :
P=PATH=/a/b/c:$PATH
33 22 1 2 3 eval $P && commandes
Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to
/usr/bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. HOME and
SHELL may be overridden by settings in the crontab; LOGNAME may not.
(Another note: the LOGNAME variable is sometimes called USER on BSD systems... on these systems, USER
will be set also.)
In addition to LOGNAME, HOME, and SHELL, cron(8) will look at MAILTO if it has any reason to send mail
as a result of running commands in “this” crontab. If MAILTO is defined (and non-empty), mail is sent to
the user so named. If MAILTO is defined but empty (MAILTO=""), no mail will be sent. Otherwise mail is
sent to the owner of the crontab. This option is useful if you decide on /usr/bin/mail instead of
/usr/lib/sendmail as your mailer when you install cron -- /usr/bin/mail doesn't do aliasing, and UUCP
usually doesn't read its mail.
The format of a cron command is very much the V7 standard, with a number of upward-compatible extensions.
Each line has five time and date fields, followed by a command, followed by a newline character ('\n').
The system crontab (/etc/crontab) uses the same format, except that the username for the command is
specified after the time and date fields and before the command. The fields may be separated by spaces or
tabs. The maximum permitted length for the command field is 998 characters.
Les commandes sont exécutées par cron(8) quand les champs « minute », « heure » et « mois de l'année »
correspondent à la date actuelle, et 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). cron(8) examine les entrées cron
chaque minute. Les champs heure et date sont :
┌────────────────────┬─────────────────────────────────┐
│ champ │ valeurs autorisées │
├────────────────────┼─────────────────────────────────┤
│ minute │ 0-59 │
├────────────────────┼─────────────────────────────────┤
│ heure │ 0-23 │
├────────────────────┼─────────────────────────────────┤
│ jour du mois │ 0-31 │
├────────────────────┼─────────────────────────────────┤
│ mois │ 0-12 (ou noms, voir ci-dessous) │
├────────────────────┼─────────────────────────────────┤
│ jour de la semaine │ 0-7 (0 ou 7 pour dimanche, ou │
│ │ utiliser des noms) │
└────────────────────┴─────────────────────────────────┘
Un champ peut contenir seulement un astérisque « * », qui correspond toujours à 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.
Exemples : « 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 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 ».
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.
The “sixth” field (the rest of the line) specifies the command to be run. The entire command portion of
the line, up to a newline or % character, will be executed by /usr/bin/sh or by the shell specified in
the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\),
will be changed into newline characters, and all data after the first % will be sent to the command as
standard input.
Remarque : le jour de l’exécution de la commande peut être indiqué avec deux champs — jour du mois et
jour de la semaine. Si les deux champs sont restreints (c’est-à-dire ne sont pas *), la commande sera
exécutée quand chaque champ correspond à l’heure actuelle. 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, on peut trouver une des huit chaînes suivantes :
┌───────────┬───────────────────────────────────────┐
│ 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 * * * │
│ │ *". │
└───────────┴───────────────────────────────────────┘
Veuillez noter que « démarrage », dans le cas de @reboot, correspond au moment où le démon de cron(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.
EXEMPLE DE FICHIER CRON
# 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 +\%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
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 DISPLAY est correctement définie.
# 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)"
EXEMPLE DE FICHIER CRONTAB SYSTÈME
The following lists the content of a regular system-wide crontab file. Unlike a user's crontab, this file
has the username field, as used by /etc/crontab.
# /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 commande_utilisateur
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 )
#
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.
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.
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 )
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, ce avec quoi
BSD et AT&T semblent ne pas être d'accord.
Les intervalles et les listes sont autorisés dans un même champ. « 1-3,7-9 » sera cependant rejeté par le
cron(8) AT&T ou BSD, car il n'accepte que « 1-3 » ou « 7,8,9 » SEULS.
Les intervalles peuvent inclure des « pas », ainsi « 1-9/2 » équivaut à « 1,3,5,7,9 ».
Les mois et les jours de la semaine peuvent être spécifiés à l'aide de leurs noms.
Environment variables can be set in the crontab. In BSD or AT&T, the environment handed to child
processes is basically the one from /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 à la place d'un des cinq premiers champs sont des
extensions.
LIMITES
The cron daemon runs with a defined timezone. It currently does not support per-user timezones. All the
tasks: system's and user's will be run based on the configured timezone. Even if a user specifies the TZ
environment variable in his crontab this will affect only the commands executed in the crontab, not the
execution of the crontab tasks themselves. If one wants to specify a particular timezone for crontab
tasks, one may check the date in the child script, for example:
# m h dom mon dow commande
TZ=UTC
0 * * * * [ "$(date +\%R)" = 00:00 ] && exécuter_un_script
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 est égal à « * ». Cependant cette implémentation vérifie
seulement si le premier caractère 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.
The crontab syntax does not make it possible to define all possible periods one can imagine. For example,
it is not straightforward to define the last weekday of a month. To have a task run in a time period that
cannot be defined using crontab syntax, the best approach would be to have the program itself check the
date and time information and continue execution only if the period matches the desired one.
If the program itself cannot do the checks then a wrapper script would be required. Useful tools that
could be used for date analysis are ncal(1) or calendar(1). For example, to run a program the last
Saturday of every month you could use the following wrapper code:
0 4 * * Sat [ "$(date +\%e)" = "$(LANG=C ncal | sed -n 's/^Sa .* \([0-9]\+\) *$/\1/p')" ] && echo "Dernier samedi" && programme_à_exécuter
UTILISER EVAL POUR ENCAPSULER DIVERSES DÉFINITIONS DE L'ENVIRONNEMENT
L'exemple suivant est fourni gracieusement par 積丹尼 Dan Jacobson :
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
il ne fonctionnera pas sans le eval. Utiliser
d=LANG=zh_TW.UTF-8 w3m -dump
conduira à
/bin/sh: LANG=zh_TW.UTF-8: command not found
DIAGNOSTICS
Chaque entrée d'une crontab 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), cron la
considérera (au moins partiellement) corrompue. Un avertissement sera écrit dans le journal système
(« syslog »).
AUTEURS
Paul Vixie <paul@vix.com>
A écrit cette page de manuel (1994).
Steve Greenland <stevegr@debian.org>
Responsable du paquet (1996-2005).
Javier Fernández-Sanguino Peña <jfs@debian.org>
Responsable du paquet (2005-2014).
Christian Kastner <ckk@debian.org>
Responsable du paquet (2010-2016).
Georges Khaznadar <georgesk@debian.org>
Responsable du paquet (2022-2024).
COPYRIGHT
Copyright © 1994 Paul Vixie
Distribuable librement, mais ne supprimez pas mon nom des sources ou de la documentation (ne vous
appropriez pas mon travail), indiquez vos modifications (ne me rendez pas responsable de bogues
potentiels), ne modifiez pas ou ne supprimez pas cette note. Vendable si le code source à construire est
fourni aux acheteurs. Aucune garantie d'aucune sorte, explicite ou implicite, n'est incluse avec ce
logiciel ; vous l'utilisez à vos risques et périls, l'utilisateur est pleinement responsable des dommages
(s'il y en a) à des tiers du fait de l'utilisation de ce logiciel."
Since year 1994, many modifications were made in this manpage, authored by Debian Developers which
maintained cron; above is a short list, more information can be found in the file
/usr/share/doc/cron/copyright.
TRADUCTION
La traduction française de cette page de manuel a été créée par Steve Petruzzello <dlist@bluewin.ch>,
Nicolas François <nicolas.francois@centraliens.net>, David Prévot <david@tilapin.org> et Lucien Gentis
<lucien.gentis@waika9.com>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
crontab 12 juin 2025 CRONTAB(5)