2.9 Planification de tâches avec CRON¶
☕ À la machine à café de CorpTech
- « Les sauvegardes n’ont pas été faites hier soir ? Qui devait s’en occuper ? »
- « C’était le tour de M. … mais je crois qu’il était malade. »
- « Et donc ? »
- « Et donc ... j'en sais rien »
Sous Alpine Linux, la planification des tâches repose sur le démon crond (BusyBox).
Pré-requis:
export EDITOR=nano
Manque d'info
Persistence des var env
Les tâches planifiées sont définies dans des fichiers crontab, un par utilisateur.
Chaque utilisateur autorisé peut disposer de son propre fichier. Sur Alpine, ces fichiers sont stockés dans : /etc/crontabs/<utilisateur>
Exemples :
/etc/crontabs/root/etc/crontabs/alice
Il n’existe pas de /etc/crontab global comme sur d’autres distributions.
Les tâches système sont définies directement dans le crontab de root.
La commande crontab¶
La commande crontab permet de créer, modifier, afficher ou supprimer le fichier crontab associé à un utilisateur.
Options usuelles :
crontab -e: Édite ou créé le fichier/etc/crontabs/<utilisateur>s’il n’existe pas .crontab -l: Affiche le contenu du crontab de l’utilisateur courant.crontab -r: Supprime le crontab de l’utilisateur courant.crontab -u <utilisateur>Manipule le crontab d’un autre utilisateur (Nécessite des privilèges administrateur).
Fichier crontab¶
Environnement d’exécution
Les tâches CRON s’exécutent dans un environnement minimal.
Dans ce TP, on suppose l’usage des valeurs par défaut (/bin/sh, PATH standard).
La gestion fine de l’environnement sera traitée séparément.
Les tâches planifiées¶
Chaque ligne représente une tâche et possède 6 paramètres séparés d’un espace:
- Les minutes
- Les heures
- Le jour
- Le mois
- Le jour de la semaine
- La commande a exécuter
Les différents paramètres:
| Champs | Paramètres | Valeurs possibles |
|---|---|---|
| 1er | Les minutes | 0-59 |
| 2ème | Les heures | 0-23 |
| 3ème | Le jour du mois | 1-31 |
| 4ème | Le mois | 1-12 ou jan, fev, mar, apr, may, jun, etc... |
| 5ème | Le jour de la semaine | 0-6 où 0=dimanche sun, mon, tue, wed, thu, fri, sat |
| 6ème | Commande | Respecte la syntaxe du SHELL. |
Manipulation¶
Connectez-vous à un compte non administrateur crontab -l
Editez le fichier crontab crontab -e
Ajout de cet aide-mémoire
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Exemple de planification de tache:
# .---------------- Minute (0 - 59)
# | .------------- Heure (0 - 23)
# | | .---------- Jour du mois (1 - 31)
# | | | .------- Mois (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- Jour de la semaine (0 - 6) oubien sun, mon, tue, wed ...
# | | | | |
# * * * * * commande
Fermeture de nano ctrl+s et ctrl+x
Constat de la création du fichier
ls /etc/crontabs
cat /etc/crontabs/<utilisateur>