Man page - crontab(5)
Packages contains this manual
Available languages:
en fr pl tr ja deManual
CRONTAB
NOMDESCRIPTION
EXEMPLE DE FICHIER CRON
EXEMPLE DE FICHIER CRONTAB SYSTĂME
ENCORE UN AUTRE EXEMPLE
VOIR AUSSI
EXTENSIONS
LIMITES
UTILISER EVAL POUR ENCAPSULER DIVERSES DĂFINITIONS DE LâENVIRONNEMENT
DIAGNOSTICS
AUTEURS
COPYRIGHT
TRADUCTION
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 crontab s, 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 :
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 :
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 .