Cron
Introduction
cron est un programme qui permet aux utilisateurs des systèmes Unix d'exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l'avance, ou selon un cycle défini à l'avance.
Le nom est dérivé du grec chronos (χρόνος), signifiant le temps. [...]
cron est un service (daemon), ce qui [...] désigne un programme qu'on ne lance qu'une seule fois après le démarrage de l'ordinateur et qui reste en tâche de fond en attendant qu'on ait besoin de lui. Le service cron (crond) attend ainsi jusqu'au moment spécifié dans le fichier de configuration (que l'on appelle la crontab) puis effectue l'action correspondante et se rendort jusqu'à l'événement suivant. [...] [1]
Utilisation de cron
Pour utiliser cron on va utiliser la commande crontab qui nous permettra d'éditer le tableau ou le démon cron prend ses informations.
Listing des tâches
Dans un premier temps on va regarder le contenu de ce fichier
# crontab -l no crontab for root
Ajout d'un tâche
Il n'y a pas de tâches planifiées pour l'utilisateur root et nous allons en créer une !
crontab -e * * * * * date >> /tmp/test_cron
Comme vous pouvez le deviner, cette commande va écrire la date dans le fichier /tmp/test_cron, mais la vraie question est: à quel intervalle ?
Vérifions:
# cat /tmp/test_cron mar. févr. 18 06:26:01 CET 2014 mar. févr. 18 06:27:02 CET 2014 mar. févr. 18 06:28:01 CET 2014 mar. févr. 18 06:29:02 CET 2014 mar. févr. 18 06:30:01 CET 2014 mar. févr. 18 06:31:01 CET 2014 mar. févr. 18 06:32:02 CET 2014 mar. févr. 18 06:33:01 CET 2014 mar. févr. 18 06:34:02 CET 2014 mar. févr. 18 06:35:01 CET 2014
A priori, la tâche est exécutée toutes les minutes. Regardons maintenant comment on peut planifier une tâche.
Planification
La planification se découpe comme suit:
* | * | * | * | * | commande |
minutes | heures | jour du mois | mois | jour de la semaine | commande à exécuter |
Les valeurs sont comprises entre:
- pour les minutes: 0 - 59
- pour les heures: 0 - 23
- pour les jours du mois: 1 - 31
- pour les mois: 1 - 12
- pour les jours de la semaine: 0 - 6 (0 = dimanche)
Les répétitions
La minute ??
Comment répéter une commande à un intervalle plus court que la minute ? Impossible, cron ne permet pas cette possibilité.
Les multiples
Comment répéter une commande toutes les deux heures ? Toutes les deux minutes ?
En effet, si on procède comme suit:
* 2 * * * commande
La commande sera exécutée tous les jours à 2h du matin...
Il faut utiliser le / pour préciser que l'on veut un multiple
* */2 * * * commande
Exécutera la commande toutes les 2 heures (à 2h00, 4h00, ...)