Table des matières

Utilisation de Crontab


Administration Système


https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/executer-un-programme-a-une-heure-differee
https://fr.wikipedia.org/wiki/Cron#crontab
http://hardware-libre.fr/2014/03/8-exemples-pour-maitriser-linux-cron

La « crontab », qu'est-ce que c'est ?

crontab est en fait une commande qui permet de lire et de modifier un fichier appelé la « crontab ».
Ce fichier contient la liste des programmes que vous souhaitez exécuter régulièrement, et à quelle heure vous souhaitez qu'ils soient exécutés.

crontab permet donc de changer la liste des programmes régulièrement exécutés. C'est toutefois le programme cron qui se charge d'exécuter ces programmes aux heures demandées. Ne confondez donc pas crontab et cron : le premier permet de modifier la liste des programmes à exécuter, le second les exécute.


Comment utilise-t-on crontab ?

Il y a trois paramètres différents à connaître, pas plus :


Afficher la crontab actuelle :

$ crontab -l
no crontab for mateo21

Normalement, vous n'avez pas encore créé de crontab. Vous noterez qu'il y a une crontab par utilisateur. Là j'édite la crontab de mateo21 car je suis loggé avec l'utilisateur mateo21, mais root a aussi sa propre crontab. La preuve :

$ sudo crontab -l
no crontab for root


Modifier la crontab

# crontab -e

SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour    mday    month   wday    command
#
# rotate log files every hour, if necessary
0       *       *       *       *       /usr/bin/newsyslog
# send log file notifications, if necessary
#1-59   *       *       *       *       /usr/bin/newsyslog -m
#
# do daily/weekly/monthly maintenance
30      1       *       *       *       /bin/sh /etc/daily
30      3       *       *       6       /bin/sh /etc/weekly
30      5       1       *       *       /bin/sh /etc/monthly
#0      *       *       *       *       sleep $((RANDOM \% 1800)) && /usr/libexec/spamd-setup


Les champs

Le fichier ne contient qu'une seule ligne :

# m h dom mon dow command

Comme cette ligne est précédée d'un #, il s'agit d'un commentaire (qui sera donc ignoré). Cette ligne vous donne quelques indications sur la syntaxe du fichier :

Chaque ligne du fichier correspond à une commande que l'on veut voir exécutée régulièrement. Vous trouverez en figure suivante un schéma qui résume la syntaxe d'une ligne.

Les différentes notations possibles

Pour chaque champ, on a le droit à différentes notations :


CrontabSignification
47 * * * * commandeToutes les heures à 47 minutes exactement. Donc à 00 h 47, 01 h 47, 02 h 47, etc.
0 0 * * 1 commandeTous les lundis à minuit (dans la nuit de dimanche à lundi).
0 4 1 * * commandeTous les premiers du mois à 4 h du matin.
0 4 * 12 * commandeTous les jours du mois de décembre à 4 h du matin.
0 * 4 12 * commandeToutes les heures les 4 décembre.
* * * * * commandeToutes les minutes !
30 5 1-15 * * commandeÀ 5 h 30 du matin du 1er au 15 de chaque mois.
0 0 * * 1,3,4 commandeÀ minuit le lundi, le mercredi et le jeudi.
0 */2 * * * commandeToutes les 2 heures (00 h 00, 02 h 00, 04 h 00…)
*/10 * * * 1-5 commandeToutes les 10 minutes du lundi au vendredi.

Administration Système