crontab

Introduction

Il est souvent utile de pouvoir paramétrer des taches en lancement automatique tout les heures ou tout les lundi, ... Dans Linux, des tâches peuvent être configurées pour s’exécuter automatiquement pendant une période de temps donnée, à des dates données ou lorsque la moyenne de chargement du système est en-dessous d’un certain niveau Un administrateur système peut utiliser des tâches automatisées pour effectuer des copies de sauvegarde périodiques, surveiller le système, exécuter des scripts personnalisés, etc. Linux fournit un utilitaire de tâches automatisées : cron

Cron

Cron est tout d’abord un service qui ce lance comme un service:

/etc/init.d/cron start
/etc/init.d/cron stop

Le fichier de configuration principal de cron, /etc/crontab, contient les lignes suivantes

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
        *  run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Contrôle de l’accès à cron

Les fichiers /etc/cron.allow et /etc/cron.deny sont utilisés pour limiter l’accès à cron. Le format de ces deux fichiers requiert un nom d’utilisateur sur chaque ligne. Les espaces ne sont pas acceptés. Le démon cron (crond) ne doit pas être redémarré si les fichiers de contrôle de l’accès sont modifiés. Ceux-ci sont lus chaque fois qu’un utilisateur essaye d’ajouter ou de supprimer une tâche cron. Le super-utilisateur peut toujours utiliser cron, indépendamment des noms d’utilisateurs contenus dans les fichiers de contrôle de l’accès. Si le fichier cron.allow existe, seuls les utilisateurs qu’il contient ont l’autorisation d’utiliser cron, et le fichier at.deny est ignoré. Si cron.allow n’existe pas, aucun des utilisateurs énumérés dans cron.deny n’est autorisé à utiliser cron.

Paramétrage

Le paramétrage ce fait via la commande crontab. Un man crontab vous donne les informations d’utilisations. Pour éditer le paramétrage de cron utiliser crontab -e

Warning

ne pas éditer par un vi le fichier /etc/crontab

Le format est assez simple :

        *  Faire une sauvegarde tous les Lundi a 2 heures du matin
0 2 * * 1 /home/gandalf/backup
        *  Rebooter la machine tous 1ers et 15 du mois a 4h15.
15 4 1,15 * * /sbin/shutdown -r +3

Les 5 premières colonnes sont :

  • Minute (0 à 59) ;
  • Heure (0 à 23) ;
  • Jour du mois (1 à 31) ;
  • Mois (1 à 12) ;
  • Jour de la semaine (0 à 6 : 0 = Dimanche, 1 = Lundi).
  • Ensuite vient la commande.

A chaque démarrage

Il parfois utile d’avoir à lancer un script a chaque démarrage de la machine il faut alors rajouter votre script dans le fichier /etc/rc.local