Gestion de Tâches Planifiées avec Crontab #
Préambule : Utilisation de la Commande date
#
La commande date
en Linux affiche ou définit la date et l’heure du système. Voici un exemple concret de son utilisation :
-
Pour afficher la date actuelle :
date
-
Pour définir la date et l’heure, un utilisateur avec les privilèges nécessaires peut utiliser
date -s
. Par exemple, pour définir la date au 5 avril 2024 à 14h00, vous utilisez :
sudo date -s "2024-04-05 14:00"
Crontab : Planification des Tâches #
Crontab (Cron Table) est un outil qui permet aux utilisateurs de Linux de planifier l’exécution automatique de tâches à des intervalles spécifiques. Chaque ligne d’un fichier crontab correspond à une tâche planifiée et comprend six champs, séparés par des espaces ou des tabulations. Voici le détail de chaque colonne :
Champ | Valeur | Description |
---|---|---|
Minute | 0 - 59 | Minute à laquelle la commande doit s’exécuter |
Heure | 0 - 23 | Heure à laquelle la commande doit s’exécuter |
Jour du mois | 1 - 31 | Jour du mois pour l’exécution de la commande |
Mois | 1 - 12 (ou noms) | Mois de l’exécution de la commande |
Jour de la semaine | 0 - 7 (Dimanche = 0 ou 7) | Jour de la semaine pour l’exécution |
Commande | Commande à exécuter | La commande à exécuter à l’heure et date données |
Exemple #
Si vous souhaitez sauvegarder un répertoire tous les jours à 3h du matin, votre entrée crontab ressemblera à ceci :
0 3 * * * /usr/bin/zip -r /backup/$(date +\%Y\%m\%d)_backup.zip /data
Ce script exécute une commande zip
tous les jours à 3h du matin, créant une archive du répertoire /data
dans le dossier /backup
avec un timestamp.
Autre exemple dans /etc/crontab
:
#
0 2 * * * root /usr/bin/find / -name "*.tmp" -delete`
Fichiers Crontab de l’Utilisateur #
- Crontab personnel : Chaque utilisateur peut avoir son propre fichier crontab, généralement situé dans un répertoire tel que
/var/spool/cron/crontabs
. Les utilisateurs peuvent éditer leur crontab personnel avec la commandecrontab -e
.
Fichiers Crontab Système #
-
/etc/crontab
: C’est le fichier crontab système principal. Contrairement aux crontabs personnels, ce fichier permet de spécifier l’utilisateur sous lequel la commande doit être exécutée. Cela ajoute un septième champ au début de chaque ligne pour spécifier l’utilisateur. -
Dossiers
/etc/cron.d/
,/etc/cron.daily/
,/etc/cron.hourly/
,/etc/cron.weekly/
, et/etc/cron.monthly/
: Ces répertoires permettent une organisation plus modulaire des tâches planifiées. Les scripts placés dans ces dossiers sont exécutés à intervalles réguliers, comme leur nom l’indique.
Mais que ce passe t’il quand on change d’heure ? #
Lorsque l’heure d’été pointe le bout de son nez, entraînant avec elle des ajustements d’heure, nos tâches cron sont mises à l’épreuve. Imaginez : il est 2h59 du matin, et hop, d’un coup de baguette, il est à nouveau 2h00 ! Quelle aubaine pour ceux qui veulent prolonger leur nuit de sommeil… ou pour les insomniaques qui désespèrent de voir le jour se lever ! Mais qu’est ce qui se passe au niveau de Cron ? Heuresement depuis la version “Vixie cron”, elles savent quand sauter dans le temps ou prendre une pause pour éviter toute répétition inutile lors du changement d’heure. En effet, si le temps avance, les tâches prévues pendant l’heure perdue sont exécutées juste après le changement, comme pour rattraper le temps volé. Et lorsqu’on recule l’heure, pas de répétition : cron évite de lancer à nouveau les tâches déjà effectuées ( Unix & Linux Stack Exchange).
Pour ceux disposant de tâches sensibles s’éxécutant en milieu de la nuit (backup de Prod ect…) configurer votre système pour qu’il utilise l’heure UTC. Ainsi, peu importe les caprices de l’heure d’été, vos tâches cron se dérouleront sans accroc, car elles suivront une horloge qui ne change jamais d’avis ( Unix & Linux Stack Exchange).