CRONTAB(5) CRONTAB(5)
crontab - Tables permettant de grer le dmon cron
Un fichier crontab contient des instructions pour le dmon cron(8). Ces
instructions ont la forme gnrale suivante : lancer cette commande
telle heure, tel jour . Chaque utilisateur dispose de sa propre table
crontab, et les commandes contenues dans une table seront excutes sous
l'identifiant du propritaire de la table. Les pseudo-utilisateurs Uucp
et News disposent gnralement de leurs propres crontabs, ce qui vite
d'invoquer explicitement su(1) dans une commande cron.
Les lignes blanches, les espaces et tabulations en dbut de lignes sont
ignores. Les lignes dont le premier caractre non blanc est un dise (#)
sont considres comme des commentaires, et sont galement ignores. Notez
que les commentaires ne peuvent pas se trouver sur la mme ligne qu'une
commande cron, car ils seraient considrs comme des paramtres de la com-
mande invoquer. De mme, un commentaire ne peut pas se trouver sur la
mme 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. Une ligne d'affec-
tation d'environnement est de la forme :
nom = valeur
o les espaces autour du signe gal (=) sont facultatives, et o tous les
espaces ultrieures dans valeur feront partie intgrante de la valeur
affecte la variable nom. La chane de valeur peut tre inscrite entre
guillemets simples ou doubles afin de protger les blancs initiaux et
finaux. La chane valeur ne supporte pas les substitutions environnemen-
tales, ainsi une ligne comme
PATH = $HOME/bin:$PATH
ne fonctionnera pas comme attendu.
Plusieurs variables d'environnement sont automatiquement dfinies par le
dmon cron(8). SHELL prend la valeur /bin/sh, LOGNAME et HOME sont
dfinies partir de la ligne de /etc/passwd correspondant au propritaire
de la crontab. PATH est dfinie /usr/bin:/bin . HOME, SHELL et PATH
peuvent tre raffectes explicitement dans la crontab contrairement LOG-
NAME, qui est l'utilisateur ayant lanc la tche.
(Note : la variable LOGNAME est parfois nomme USER sur les systmes BSD.
Sur ces systmes, USER doit aussi tre dfinie.)
En plus de LOGNAME, HOME, et SHELL, cron(8) prendra en compte la vari-
able MAILTO s'il doit envoyer le rsultat d'une commande excute depuis
cette crontab. Si MAILTO est dfinie (et non vide), le rsultat est
envoy l'utilisateur indiqu. Si MAILTO est dfinie mais vide
(MAILTO=""), aucun courriel ne sera envoy. Sinon, le courriel sera
envoy au propritaire de la crontab.
Sur les systmes Debian GNU/Linux, cron gre le module pam_env et charge
l'environnement spcifi dans le fichier /etc/security/pam_env.conf.
Toutefois les rglages de PAM n'affectent pas les rglages dcrits
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 dfaut, cron envoie le courrier en utilisant l'en-tte "Content-type"
de "text/plain" avec comme valeur du paramtre "charset=" l'encodage
utilis par crond(8) son lancement, i.e. soit la locale par dfaut du
systme si aucune variable d'environnement LC_* n'est attribue, soit la
locale spcifie par ces variables LC_* (voir locale(7)). Vous pouvez
utiliser un autre codage de caractres pour les messages envoys par cron
en positionnant les variables CONTENT_TYPE et CONTENT_TRANSFER_ENCODING
dans vos crontabs aux valeurs souhaites des en-ttes de message corre-
spondants.
Le format d'une commande cron est trs proche du standard V7, avec
quelques options permettant de garder une compatibilit ascendante.
Chaque ligne dispose de 5 champs de date et d'heure, suivis d'une com-
mande et enfin d'un retour la ligne ( \n ). Le systme crontab
(/etc/crontab) utilise le mme format, si ce n'est que le champ utilisa-
teur est indiqu aprs les champs de date et d'heure mais avant la com-
mande. Les champs peuvent tre spars par des espaces ou des tabulations.
Les commandes sont excutes par cron(8) lorsque les champs minute, heure
et mois de l'anne correspondent la date actuelle, et lorsqu'au moins
l'un des deux champs jour (jour du mois ou jour de la semaine) corre-
spond au jour actuel (voir Note ci-dessous). cron(8) examine les
entres cron chaque minute. Les champs d'heure et de date sont :
champ valeurs autorises
----- --------------
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 astrisque * , qui correspond l'intervalle
premier-dernier .
Les intervalles de nombres sont permis. Ils se prsentent sous forme de
deux nombres spars par un trait d'union. Les bornes sont incluses. Par
exemple, l'intervalle horaire 8-11 correspond une excution aux heures
8, 9, 10, et 11.
Les listes sont permises. Une liste est un ensemble de nombres ou
d'intervalles spars par des virgules. Exemple 1,2,5,9 , 0-4,8-12 .
Des valeurs de pas peuvent tre associes aux intervalles. la suite
d'un intervalle, un /<nombre> prcise le pas adopter pour parcourir
l'intervalle. Par exemple 0-23/2 dans le champ horaire demande une
excution 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
autoriss
la suite d'un astrisque. 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 premires lettres (pas de diffrence
majuscule/minuscule). Les intervalles ou les listes de noms ne sont pas
accepts.
Le sixime champ (le reste de la ligne) indique la commande excuter.
Tout le reste de la ligne, jusqu'au retour chariot ou au caractre %,
sera excut par /bin/sh, ou par le shell mentionn dans la variable SHELL
du fichier cron. Les signes pourcent (%) dans les commandes seront
transforms en retour-chariot, sauf s'ils sont prcd par un backslash \.
Toutes les donnes se trouvant la suite du premier % seront transmises
la commande sur son entre standard. Il n'est pas possible d'crire une
commande sur plusieurs lignes, comme on le ferait dans un shell avec le
\ final.
Note : le jour d'excution d'une commande peut tre spcifi par deux
champs (jour du mois, et jour de la semaine). Si les deux champs sont
remplis (c.--d. diffrents de * ), la commande sera lance quand l'un
des champs au moins correspond la date en cours. Par exemple
30 4 1,15 * 5 excutera une commande 4 h 30 du matin les 1er et 15 de
chaque mois, ainsi que chaque vendredi.
la place des cinq premiers champs peut apparatre l'une des huit chanes
spciales :
chane signification
------ -------
@reboot Excuter une fois au dmarrage.
@yearly Excuter une fois par an, 0 0 1 1 * .
@annually (idem que @yearly)
@monthly Excuter une fois par mois, 0 0 1 * * .
@weekly Excuter une fois par semaine, 0 0 * * 0 .
@daily Excuter une fois par jour, 0 0 * * * .
@midnight (idem que @daily)
@hourly Excuter une fois par heure, 0 * * * * .
# Utiliser /bin/bash pour lancer les commandes, plutt que le shell par
# dfaut /bin/sh
SHELL=/bin/bash
# Envoyer les rsultats Paul, sans tenir compte du propritaire
MAILTO=paul
#
# Excuter chaque jour, 5 minutes aprs minuit
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# Excuter le premier de chaque mois 14 h 15 - Rsultat 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 aprs 0 h, 2 h, 4 h..."
5 4 * * sun echo "Tous les dimanches 4 h 05"
Le champ utilisateur est prsent, il est utilis comme dans le fichier
/etc/crontab.
# /etc/crontab: crontab du systme
# A la diffrence des autres crontabs, vous n'avez pas besoin d'excuter
# la commande crontab pour installer la nouvelle version quand vous
# modifiez ce fichier. Ce fichier possde aussi un champ utilisateur 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 utilisateur 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
#
# Supprime l'invocation d'anacron, puisque cela est maintenant gr par
# un fichier dans /etc/cron.d
cron(8), crontab(1)
Dans la dsignation du jour de la semaine, le 0 et le 7 correspondent
tous deux au dimanche. BSD et ATT ne sont pas entirement d'accord
l-dessus.
On autorise les intervalles et les listes dans le mme champ. 1-3,7-9
sera rejet par le cron ATT 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 dfinies dans la crontab. Avec
BSD ou ATT, l'environnement transmis aux processus fils est globalement
celui de /etc/rc.
La sortie des commandes est soit envoye au propritaire de la crontab
(pas sous BSD), soit dirige vers une autre personne (pas sous SysV),
soit la redirection est dsactive et aucun courriel ne sera envoy (pas
sous SysV non plus).
Toutes les commandes @ qui peuvent apparatre dans l'un des cinq pre-
miers champs sont des extensions.
Paul Vixie <paul [AT] vix.com>
Cette page de manuel a t traduite et mise jour par Christophe Blaess
entre 1997 et 2003. La version prsente dans Debian est dornavant main-
tenue 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 24 janvier 1994 CRONTAB(5)
- Chris