Aller au contenu

Cron - Le plannificateur de tâche

·
Redhat
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops
RH134 - Cet article fait partie d'une série.
Partie 30: Cet article

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 commande crontab -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)​.

RH134 - Cet article fait partie d'une série.
Partie 30: Cet article

Articles connexes

Optimiser les performances
Redhat
Réaliser des scripts Bash
Redhat
Analyse du serveur et support RedHat
Redhat