User Tools

Site Tools


informatique:linux:cron

This is an old revision of the document!


cron/crontab

Cron est un programme qui permet, sous Unix, d'automatiser des tâches en les programmant pour se lancer à une heure/date précise (l'équivalent du planificateur de taches sous Windows). On distingue le démon crond et l'utilitaire de configuration crontab.

Chaque utilisateur peut utiliser cron ; on peut limiter l'accès à l'utilitaire en créant/complétant les fichiers /etc/cron.allow (et /etc/cron.deny ) des noms d'utilisateurs adéquats. Le fichier cron.allow est prioritaire à cron.deny.

Pour utiliser cron, on utilise crontab, l'utilitaire d'édition et de vérification syntaxique des fichiers de configuration. On peut lister, editer ou supprimer (remove) ce fichier de conf :

crontab [-u user] {-l e r}

L'option -u permet au root d'accéder à celui d'un autre utilisateur.

Quand on édite un fichier de configuration - on utilise donc crontab -e - on obtient un éditeur de texte fonctionnant comme vi. En une phrase, cet utilitaire fonctionne ainsi :

  • i pour rentrer en mode insertion (pour écrire)
  • echap pour rentrer en mode commande
  • echap puis :wq pour sauvegarder et quitter
  • echap puis :q! pour quitter sans sauvegarder

La syntaxe du fichier est la suivante : # m h dom mon dow command qui signifit respectivement minute, hour, day of month, month, day of week, 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) à 7 (samedi).

Il existe des méta-caractères :

  • * tous
  • / spécifie une répétition
  • - définit une plage
  • , spécifie plusieurs valeurs

Donc, en résumé :

  • on lance la commande crontab -e
  • on entre en mode insertion : i
  • on modifie le fichier à sa guise (cf exemples plus bas)
  • on sauvegarde et on quitte : <echap> :wq

On obtient une confirmation de la prise en compte de la modification :

crontab: installing new crontab

Voici des exemples (toujours 1 ligne par commande).

  • Lancer script.sh tous les jours à 2h :
0 2 * * * ./script.sh
  • Lancer mrtg avec un paramètre toutes les 5 min : */5 * * * * mrtg /var/www/mrtg/mrtg.cfg
  • lancer script.sh du lundi au vendredi à 23h :
0 23 * * 1-5
  • lancer script.sh les 1 et 15 du mois à 23h :
0 23 1,15 * *

Il existe des chaînes de caractères spéciales :

  • @reboot : exécution une fois au démarrage
  • @yearly : exécution une fois par an, “0 0 1 1 *”
  • @annually : exécution une fois par an, “0 0 1 1 *”
  • @monthly : exécution une fois par mois, “0 0 1 * *”
  • @weekly : exécution une fois par semaine, “0 0 * * 0”
  • @daily : exécution une fois par jour, “0 0 * * *”
  • @midnight : execution une fois par jour, “0 0 * * *”
  • @hourly : execution une fois par heure, “0 * * * *”
informatique/linux/cron.1233918112.txt.gz · Last modified: 2013/10/14 20:54 (external edit)