Introduction à Cron
Cron est le diminutif de Crontab qui est lui même le diminutif de Chrono table qui signifie en bon français "table de planification". Comme son nom l'indique, Cron planifie des tâches.
Ces tâches peuvent être très diverses et variées (exécution de commande, ouverture de fichier..). Cron se sépare en deux éléments :
- crontab est la commande qui permet d'écrire dans le fichier Crontab situé dans /var/spool/cron/<utilisateur>.
- cron est un démon qui exécute la commande.
Installer Cron
Cron à plusieurs mise en oeuvre ou implémentation. Pour cet exemple, nous allons utiliser Cronie. Pourquoi Cronie ? Car c'est la première implémentation dans la liste des paquets valide de Archlinux
Sous Archlinux, nous utilisons Pacman :
sudo pacman -S cronie
Puis on démarre le service :
$ sudo systemctl start cronie.service
On peut également l'activer, afin que le service démarre au démarrage de la machine :
$ sudo systemctl enable cronie.service
Utilisation de Cron
Il y a deux méthodes pour utiliser Cron, soit via les répertoires de Cron, soit via le fichier Crontab directement.
Via les répertoires
Lors de son installation, Cron va créer plusieurs dossiers dans /etc/, respectivement :
cron.hourly
: exécution chaque heurecron.daily
: exécution chaque jourcron.weekly
: exécution chaque semainecron.monthly
: exécution chaque mois
Il suffit de créer des fichiers script .sh
dans le dossier de son choix. Si par exemple nous voulons qu'un script s'éxecute dans la journée, peu importe quand, nous le placerons dans /etc/cron.daily
. Pour plus de détail voir la section "Utilisation des répertoires" de la page Cron sur le wiki ArchLinux.
Le dossier cron.d
Un dossier /etc/cron.d
est également créé. Ce dossier va fonctionner différemment des autres : celui-ci ne contient pas de fichier directement exécutable mais des fichiers qui auront le même format d'écriture que le fichier crontab vu en suivant. La spécificité est qu'il faut ajouter un nom d'utilisateur avant la commande à exécuter.
Via le fichier Crontab
La solution précédente ne permet pas d'être précis dans la définition du moment d'éxecution. C'est pour cela qu'il existe cette solution. Ici, il s'agit d'éditer le fichier Crontab via la commande suivante :
$ crontab -e
Pour configurer un Cron dans ce fichier, il y a un protocole à suivre :
- on indique d'abord le moment précis ou l'on veut que notre Cron déclenche notre commande
- puis on indique la commande à executer.
Pour définir le moment précis, il y a un ordre à respecter :
- les minutes
- les heures
- les jours dans le mois
- les mois
- les jours dans la semaine
exemple : 0 12 3 * * "hello"
- ce Cron execute "hello" à 12h00 au troisième jour de chaque mois, peut importe le jour de la semaine.
nota-bene : les étoiles prennent en compte l'ensemble de chaque paramétres.
Commandes Utiles
Voici quelques commandes de base pour utiliser Cron:
$ crontab -e
Commande vu précédemment, elle permet d'éditer le fichier "Crontab" pour y ajouter ou supprimer des "Cron".
$ crontab -l
Cette commande va lister les crons du fichier Crontab.