Crontab - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

crontab est le nom du programme sous Unix (ou Linux) qui permet d'éditer des tables de configuration du programme cron. Par extension, on appelle souvent cron (ou cron job en anglais) toute application lancée à horaire fixe.

La commande crontab édite en fait un fichier relatif à l'utilisateur qui l'exécute, et en vérifie la syntaxe. Ce fichier se situe dans l'arborescence /var, par exemple :

/var/spool/cron/crontabs/utilisateur (AIX, HP-UX, Solaris, Debian GNU/Linux et Ubuntu)
/var/spool/cron/tabs/utilisateur (SuSE GNU/Linux)
/var/cron/tabs/utilisateur (FreeBSD et OpenBSD)

Ainsi pour l'utilisateur root sur une machine Debian, la table cron sera stockée dans :

/var/spool/cron/crontabs/root

La majorité des systèmes Linux (SuSE, Debian, Red Hat) disposent en plus d'une crontab centralisée dans /etc/crontab. On trouve également des dossiers /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly qui contiennent les tables cron des différents parties du système (rotation des logs, mise à jour de fichiers...).

Pour les postes de travail qui ne fonctionnent pas forcément 24h/24, une application appelée anacron permet de lancer les commandes qui auraient du l'être lorsque l'ordinateur était éteint.

Syntaxe

Visualisation

Afin d'afficher le contenu de la table cron (pour l'utilisateur courant), il suffit d'exécuter la commande suivante :

      $ crontab -l      

Cette commande ne permet pas d'afficher la crontab centralisée (/etc/crontab).

Modification

Afin d'éditer la table cron (pour l'utilisateur courant), il suffit d'exécuter la commande suivante :

      $ crontab -e      

Cette commande a pour effet de lancer l'éditeur par défaut (en général vi) présentant la table actuelle (donc aucune s'il s'agit du premier lancement de crontab). Cette commande ne permet pas de modifier la crontab centralisée (/etc/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 le numéro du mois (de 1 à 12) ou l'abréviation du nom du mois (jan, feb, mar, apr, ...)
  • JJJ représente l'abréviation du nom du jour ou le chiffre correspondant au jour de la semaine (0 représente le dimanche, 1 représente le lundi, ..., 7 représente le dimanche)
  • 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 automatiquement un courriel de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.

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

  • * : à 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.

Page générée en 0.092 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise