Cron

De Linuxmemo.

(Différences entre les versions)
(Dépannage)
(Syntaxe crontab)
Ligne 21 : Ligne 21 :
     tâche représente la commande ou le script shell à exécuter
     tâche représente la commande ou le script shell à exécuter
     log représente le nom d'un fichier dans lequel stocker le journal des opérations. Si la clause > log n'est pas spécifiée, cron enverra un courriel de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.
     log représente le nom d'un fichier dans lequel stocker le journal des opérations. Si la clause > log n'est pas spécifiée, cron enverra un courriel de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.
 +
 +
 +
*    *    *  *    *        command to be executed
 +
-    -    -  -    -
 +
|    |    |  |    |
 +
|    |    |  |    +----- day of week (0 - 6) (Sunday=0)
 +
|    |    |  +------- month (1 - 12)
 +
|    |    +--------- day of        month (1 - 31)
 +
|    +----------- hour (0 - 23)
 +
+------------- min (0 - 59)
Pour chaque unité de temps (minute/heure/...) les notations possibles sont :
Pour chaque unité de temps (minute/heure/...) les notations possibles sont :

Version du 4 juin 2013 à 11:35


Syntaxe crontab

Chaque entrée de la table (chaque ligne) correspond à une tâche à exécuter et est notée de la façon suivante :

mm hh jj MMM JJJ tâche > log

Dans cette syntaxe :

   mm représente les minutes (de 0 à 59)
   hh représente l'heure (de 0 à 23)
   jj représente le numéro du jour du mois (de 1 à 31)
   MMM représente l'abréviation du nom du mois (jan, feb, ...) ou le numéro du mois (de 1 à 12)
   JJJ représente l'abréviation du nom du jour ou le numéro du jour dans la semaine :
       0 = dimanche
       1 = lundi
       ...
       6 = samedi
       7 = dimanche (représenté deux fois pour les deux types de semaine)
   tâche représente la commande ou le script shell à exécuter
   log représente le nom d'un fichier dans lequel stocker le journal des opérations. Si la clause > log n'est pas spécifiée, cron enverra un courriel de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.


*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Pour chaque unité de temps (minute/heure/...) les notations possibles sont :

   * : à chaque unité de temps (0, 1, 2, 3, 4...)
   5,8 : les unités de temps 5 et 8
   2-5 : les unités de temps de 2 à 5 (2, 3, 4, 5)
   */3 : toutes les 3 unités de temps (0, 3, 6, 9...)
   10-20/3 : toutes les 3 unités de temps, entre la dixième et la vingtième (10, 13, 16, 19)

Si, sur la même ligne, on trouve précisées une unité de temps « numéro du jour du mois » et une unité de temps « jour de la semaine », celles-ci sont considérées par crontab comme cumulatives.

Raccourcis Description Équivalent
@reboot Au démarrage Aucun
@yearly Tous les ans 0 0 1 1 *
@annually Tous les ans 0 0 1 1 *
@monthly Tous les mois 0 0 1 * *
@weekly Toutes les semaines 0 0 * * 0
@daily Tous les jours 0 0 * * *
@midnight Tous les jours 0 0 * * *
@hourly Toutes les heures 0 * * * *

Dépannage

Dans les répertoires /etc/cron.xxxx/ qui sont exécutés par la commande "run-parts", les nons de script doivent avoir une syntaxe bien particulière sous peine de ne pas etre lancé. man: ...le nom satisfait les contraintes décrites ci-dessous. Les autres fichiers sont ignorés.

  • les noms ne doivent être constitués que de lettres minuscules ou majuscules, de chiffres, de tirets bas (« underscore ») ou de tirets.
  • assurez-vous d’avoir mis en première ligne ‘#!/bin/sh‘
  • assurez-vous que le nom du script ne contiens pas de ‘.’. par exemple, vous devriez renommer ‘monscript.sh‘ en ‘monscript‘
  • utilisez les chemins absolus si vous devez lire/écrire dans un fichier depuis le script
  • essayez de lancer le script depuis le terminal pour vérifier qu’il n’y a pas de problème évident
  • run-parts –test /etc/cron.hourly/‘ vous dira quels sont les scripts qui seront lancés, vous devriez voir votre script dans la liste
  • essayez de le lancer comme cron, par exemple :
cd / && run-parts –report /etc/cron.hourly
cron utilise syslog pour enregistrer les logs. Vérifiez le fichier de configuration (/etc/syslog.conf) pour voir où vont les logs et vérifiez les pour trouver les erreurs.

Test de la définition: http://cron.schlitt.info/

Outils personnels