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:

  1. Les minutes
  2. Les heures
  3. Le jour
  4. Le mois
  5. Le jour de la semaine
  6. 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>