Crontab

Fonction

La commande crontab permet de planifier des traitements à intervalles réguliers ou à certaines dates.

On peut trouver une table pour chaque utilisateur du système.

 

Commande

crontab [-u utilisateur] [-l | -r | -e]
  • -l : Permet de lister la table crontab en cours.
  • -r : Pour effacer la crontab en cours.

Pour éditer la table d'un utilisateur, utiliser l'option -e. Ne pas éditer le fichier manuellement.

 

crontab -e permet d'éditer le fichier dans l'éditeur par défaut ( vi ) et de vérifier puis valider la syntaxe saisie.

 

Syntaxe

Le format d'une ligne du fichier est organisé de la sorte :

x x x x x commande

 

La base :

Cinq numériques suivis de la commande à lancer.

  1. minute (0 à 59)
  2. heure (0 à 23)
  3. jour du mois (1 à 31)
  4. mois (1 à 12)
  5. jour de la semaine (0 à 6 : Dimanche = 0, Lundi = 1, ect ... )
  6. Commande ( à l'identique d'un lancement dans un shell )

On enregistre la saisie de la même manière que pour enregistrer et quitter vi :wq

 

Syntaxe étendue :

On peut utiliser une astérisque pour remplacer nimporte quelle valeur numérique :
0 13 * * * commande     : Toute l'année, tous les jours à 13H00

20 15 * 3 1 commande  : Tous les lundis du mois de mars, à 15H20 

 

On peut spécifier plusieures valeurs pour un champ :
0,10 12 1,5 * * commande    : Toute l'année, les 1er et 5 de chaque mois à 12H00 et 12H10.

 

Utilisation d'un intervalle :
0 8-12 * * * commande     : De 8H00 à 12H00, a chaque heure pleine, toute l'année.

0 20 * * 1-5 commande    : Toute l'année à 20H00 du lundi au vendredi.

 

Répétition d'une occurence :
*/5 * * * * commande        : Toutes les 5 minutes

30 1 */2 * * commande     : Tous les 2 jours, à 1H30

 

Variables

Les variables d'environnement : $USER, $HOME, $SHELL sont reconnues par le cron.

 

Notifications

Cron envoie par mail ue notification de son execution.

Pour ne pas recevoir de message, on peut rediriger les sorties vers un fichier :

0 */6 * * * find /DATASOFT -mtime +31 -exec rm -f {} \; >> $HOME/log 2&1

 

Service

Le service chargé de faire executer toutes les taches par le système s'appelle crond. Il lit toutes les minutes les fichiers de crontab pour voir si des taches doivent être executées.

 

Fichiers

  • /var/spool/cron contient tous les fichiers de crontab. Un fichier par compte unix qui possède un ordonancement.
  • /etc/cron.allow
  • /etc/cron.deny

Si le fichier cron.allow existe, alors vous devez être mentionnés dans celui-ci pour pouvoir utiliser cette commande.

Si le fichier cron.allow n’existe pas, mais que le fichier cron.deny existe, alors vous ne devez pas être mentionnés dans celui-ci, si vous désirez utiliser cette commande.

Si aucun de ces deux fichiers n’existe, seul root a le droit d’utiliser cette commande.

  • /var/log/cron contient les logs purgés eux même par une crontab.