User Tools

Site Tools


informatique:linux:cron

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatique:linux:cron [2009/02/06 11:01] – créée pteuinformatique:linux:cron [2016/12/18 14:35] (current) – [Tips] Utilisation du "%" pteu
Line 11: Line 11:
 On peut **l**ister, **e**diter ou supp**r**imer (**r**emove) ce fichier de conf : On peut **l**ister, **e**diter ou supp**r**imer (**r**emove) ce fichier de conf :
  
-  crontab [-u user] {-l e r}+<code bash> 
 +crontab [-u user] {-l e r} 
 +</code>
  
 L'option ''-u'' permet au root d'accéder à celui d'un autre utilisateur. L'option ''-u'' permet au root d'accéder à celui d'un autre utilisateur.
Line 22: Line 24:
   * echap puis **:q!** pour quitter sans sauvegarder   * echap puis **:q!** pour quitter sans sauvegarder
  
-La syntaxe du fichier est la suivante : ''# m h  dom mon dow   command'' qui signifit respectivement **m**inute, **h**our, **d**ay **o**f **m**onth, **mon**th, **d**ay **o**f **w**eek, et commande (il faut au moins un espace ou une tab entre chaque colonne). Les intervalles sont naturels, sauf pour la colonne **dow** qui va de 0 (dimanche) à (samedi).+La syntaxe du fichier est la suivante : ''# m h  dom mon dow   command'' qui signifie respectivement **m**inute, **h**our, **d**ay **o**f **m**onth, **mon**th, **d**ay **o**f **w**eek, et commande (il faut au moins un espace ou une tab entre chaque colonne). Les intervalles sont naturels, sauf pour la colonne **dow** qui va de 0 (dimanche) à (samedi). 7 vaut également dimanche, pour des problèmes de compatibilité.
  
 Il existe des méta-caractères : Il existe des méta-caractères :
Line 37: Line 39:
  
 On obtient une confirmation de la prise en compte de la modification : On obtient une confirmation de la prise en compte de la modification :
-  crontab: installing new crontab+<code bash> 
 +crontab: installing new crontab 
 +</code>
  
 Voici des exemples (toujours 1 ligne par commande). Voici des exemples (toujours 1 ligne par commande).
  
   * Lancer script.sh tous les jours à 2h :   * Lancer script.sh tous les jours à 2h :
 +<code bash>
 +0 2 * * * ./script.sh
 +</code>
  
-  0 2 * * * ./script.sh +  * Lancer mrtg avec un paramètre toutes les 5 min : 
- +<code bash> 
-  * Lancer mrtg avec un paramètre toutes les 5 min : ''*/5 * * * * mrtg /var/www/mrtg/mrtg.cfg''+*/5 * * * * mrtg /var/www/mrtg/mrtg.cfg 
 +</code>
  
   * lancer script.sh du lundi au vendredi à 23h :   * lancer script.sh du lundi au vendredi à 23h :
- +<code bash> 
-  0 23 * * 1-5+0 23 * * 1-5 
 +</code>
  
   * lancer script.sh les 1 et 15 du mois à 23h :   * lancer script.sh les 1 et 15 du mois à 23h :
- +<code bash> 
-  0 23 1,15 * *+0 23 1,15 * * 
 +</code>
  
 Il existe des chaînes de caractères spéciales : Il existe des chaînes de caractères spéciales :
Line 64: Line 74:
   * ''@midnight'' : execution une fois par jour, "0 0 * * *"   * ''@midnight'' : execution une fois par jour, "0 0 * * *"
   * ''@hourly'' : execution une fois par heure, "0 * * * *"   * ''@hourly'' : execution une fois par heure, "0 * * * *"
 +
 +Le root peut (et doit même) utiliser le répertoire ''/etc/cron.*'' afin de centraliser toutes les commandes en crontab (sinon disséminées dans des fichiers obscurs). La syntaxe est la même qu'une crontab éditée avec ''crontab -e'', à ceci près qu'on ajoute un champ //user// avant la commande, pour préciser l'identité sous laquelle sera lancée la commande ; par exemple pour lancer sous l'identité de "dude" :
 +<code bash>
 +*/10 * * * * dude echo "pwet"
 +</code>
 +
 +
 +=====Tips=====
 +
 +====Utilisation du "%"====
 +
 +Lorsqu'on utilise une commande contenant des ''%'' dans une crontab, comme la commande ''date'' par exemple :
 +<code bash>
 +01 00 * * *     root echo "Bonjour, nous sommes le `date +%Y-%m-%d`" >> /root/horloge_parlante.log
 +</code>
 +... elle génère inévitablement un message d'erreur du style :
 +> /bin/sh: -c: ligne 0: caractère de fin de fichier (EOF) prématuré lors de la recherche du « ` » correspondant
 +
 +Le problème vient du fait que le caractère ''%'' est interprété par cron comme un saut de ligne. Pour utiliser ce caractère dans une crontab, il faut le protéger en le précédant d'un ''\'' :
 +<code bash>
 +01 00 * * *     root echo "Bonjour, nous sommes le `date +\%Y-\%m-\%d`" >> /root/horloge_parlante.log
 +</code>
informatique/linux/cron.1233918112.txt.gz · Last modified: 2013/10/14 20:54 (external edit)