Pour mettre en place un tâche cron, il faut tout d'abord accéder au crontab, qui liste toutes les tâches cron configurés.
Pour y accéder, il faut se connecter avec l'utilisateur qui devra exécuter la requête (www-data, postgres….) et une fois connecté lancer la commande crontab -e
. Cela va afficher toutes les tâches actuellement présentes.
Pour créer une nouvelle tâche cron, il faut tout d'abord un script. Il peut être écrit en php, python, bash, ou autres tant que le système peux le lire (si les paquets sont installés). Ce script peut exécuter tous ce dont vous souhaitez, il suffit juste de le coder avec le langage de votre choix.
Une fois que vous avez écrit votre script, pour l'exécuter à une heure ou date précise, il va falloir configurer la tâche cron. Une tâche cron est composée d'une première partie qui permet d'indiquer la date à laquelle sera exécuté le script et une seconde partie composée de la commande à exécuter (du script en général).
Voici à quoi ressemble une commande en brut mm hh jj MMM JJJ tâche
mm représente les minutes (de 0 à 59)
hh représente l'heure (de 0 à 23)
jj représente le numéro du jour du mois (de 1 à 31)
MMM représente l'abréviation du nom du mois (jan, feb, …) ou bien le numéro du mois (de 1 à 12)
JJJ représente l'abréviation du nom du jour ou bien le numéro du jour dans la semaine :
0 = Dimanche, 1 = Lundi, 2 = Mardi, … , 6 = Samedi, 7 = Dimanche (représenté deux fois pour les deux types de semaine)
Pour chaque valeur numérique (mm, hh, jj, MMM, JJJ) les notations possibles sont :
* : à chaque unité (0, 1, 2, 3, 4…)
5,8 : les unités 5 et 8
2-5 : les unités de 2 à 5 (2, 3, 4, 5)
*/3 : toutes les 3 unités (0, 3, 6, 9…)
10-20/3 : toutes les 3 unités, entre la dixième et la vingtième (10, 13, 16, 19)
Exemple :
Périodicité | Code cron |
---|---|
Tous les ans | 0 0 1 1 * |
Tous les mois | 0 0 1 * * |
Toutes les semaines | 0 0 * * 0 |
Tous les jours | 0 0 * * * |
Toutes les heures | 0 * * * * |
Tous les jours à 23 h 30 | 30 23 * * * |
Tous les premiers du mois à 2 h 30 | 30 2 * * * |
Du 2 au 5 de chaque mois à 10 h 12 | 12 10 2-5 * * |
Une fois que la date est configurée, il faut s'occuper de la tâche. Pour la tâche il suffit d'entrer la commande que l'on souhaite exécuter. Si l'on souhaite exécuter un script php ou bash, il faut indiquer le chemin complet du script (/var/www/test.php), et pour éviter les erreurs il est conseillé de mettre la commande test
avant d'exécuter le script.
0 0 * * * test -e /var/www/test.php && /usr/bin/php /var/www/test.php
Cette commande (test -e
) va d'abord tester si le fichier existe avant de l'exécuter. Il ne faut pas oublier non plus le /usr/bin/php
ou /usr/bin/bash
devant le script pour que le script s'exécute correctement.
Cette ligne va permettre d'exécuter tous les jours à minuit le script /var/www/test.php
s'il existe.