Planification de tâches Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le laboratoire sur la planification de tâches Linux. Dans cette session, vous apprendrez à automatiser les tâches répétitives sous Linux en utilisant l'utilitaire crontab, un planificateur de tâches basé sur le temps dans les systèmes d'exploitation de type Unix.

La planification de tâches est une compétence fondamentale pour les administrateurs système et les développeurs. En automatisant les opérations de routine, vous pouvez améliorer l'efficacité, garantir la fiabilité et réduire l'intervention manuelle. L'utilitaire crontab vous permet de planifier des commandes pour qu'elles s'exécutent à des intervalles spécifiés, allant de quelques minutes à plusieurs mois.

Tout au long de ce laboratoire, vous apprendrez à créer, gérer et surveiller les tâches planifiées à l'aide de crontab. À la fin, vous aurez les compétences nécessaires pour implémenter la planification automatique de tâches dans votre propre environnement Linux.

Comprendre Crontab et créer votre première tâche planifiée

Crontab (Table Cron) est un utilitaire sous Linux qui permet aux utilisateurs de planifier des tâches pour qu'elles s'exécutent automatiquement à des moments spécifiques. Ces tâches planifiées sont appelées "cron jobs".

Syntaxe de Crontab

La syntaxe de base d'un cron job suit ce format :

* * * * * command_to_execute

Chaque astérisque représente une unité de temps différente :

  1. Minute (0-59)
  2. Heure (0-23)
  3. Jour du mois (1-31)
  4. Mois (1-12)
  5. Jour de la semaine (0-6, où 0 est dimanche)

Par exemple, pour exécuter une commande tous les jours à 14h30, vous utiliseriez :

30 14 * * * command_to_execute

Créer votre premier cron job

Créons un simple cron job qui enregistrera la date et l'heure actuelles toutes les minutes. Cela vous aidera à comprendre le fonctionnement des cron jobs.

Tout d'abord, assurez-vous d'être dans le bon répertoire :

cd ~/project

Maintenant, créons un fichier journal vide dans lequel notre cron job écrira la date et l'heure :

touch ~/project/date_log.txt

Ensuite, ouvrez l'éditeur de crontab avec la commande suivante :

crontab -e

Si c'est la première fois que vous utilisez crontab, vous pourriez être invité à choisir un éditeur. Choisissez votre option préférée (nano est recommandé pour les débutants).

Dans l'éditeur, ajoutez la ligne suivante à la fin du fichier :

* * * * * date >> ~/project/date_log.txt

Enregistrez et quittez l'éditeur :

  • Si vous utilisez nano, appuyez sur Ctrl+O pour enregistrer, puis appuyez sur Entrée pour confirmer, et enfin appuyez sur Ctrl+X pour quitter.
  • Si vous utilisez vim, appuyez sur Échap, puis tapez :wq et appuyez sur Entrée.

Ce cron job ajoutera la date et l'heure actuelles au fichier date_log.txt toutes les minutes. Attendez au moins une minute, puis vérifiez si votre cron job fonctionne :

cat ~/project/date_log.txt

Vous devriez voir une sortie similaire à ceci :

Tue Feb 15 14:32:01 UTC 2023

Si vous attendez plus longtemps et que vous exécutez à nouveau la commande, vous devriez voir plusieurs entrées avec des horodatages espacés d'environ une minute, confirmant que votre cron job fonctionne correctement.

Gérer et modifier les cron jobs

Maintenant que vous avez créé votre premier cron job, apprenons à afficher, modifier et gérer vos tâches planifiées.

Afficher les cron jobs actuels

Pour afficher vos cron jobs actuels, utilisez la commande suivante :

crontab -l

Cette commande affichera tous les cron jobs actuellement planifiés pour votre utilisateur. Vous devriez voir la tâche que vous avez créée à l'étape précédente :

* * * * * date >> ~/project/date_log.txt

Comprendre les modèles de planification des cron jobs

Avant de modifier notre tâche, comprenons quelques modèles de planification courants :

  • * * * * * - S'exécuter toutes les minutes
  • */5 * * * * - S'exécuter toutes les 5 minutes
  • 0 * * * * - S'exécuter au début de chaque heure
  • 0 0 * * * - S'exécuter à minuit tous les jours
  • 0 0 * * 0 - S'exécuter à minuit tous les dimanches

Modifier un cron job

Modifions le cron job existant pour qu'il s'exécute toutes les 5 minutes au lieu de toutes les minutes. Pour ce faire, ouvrez l'éditeur de crontab :

crontab -e

Trouvez la ligne que vous avez ajoutée à l'étape précédente :

* * * * * date >> ~/project/date_log.txt

Changez-la en :

*/5 * * * * date >> ~/project/date_log.txt

Le */5 en première position signifie "toutes les 5 minutes". Enregistrez et quittez l'éditeur en utilisant la même méthode que précédemment (Ctrl+O, Entrée, Ctrl+X pour nano).

Pour vérifier les modifications, affichez à nouveau votre crontab :

crontab -l

Vous devriez voir le cron job mis à jour. La sortie sera :

*/5 * * * * date >> ~/project/date_log.txt

Si vous vérifiez à nouveau votre fichier journal après avoir attendu 5 minutes :

cat ~/project/date_log.txt

Vous devriez remarquer que de nouvelles entrées sont maintenant ajoutées toutes les 5 minutes au lieu de toutes les minutes.

Avantages de la modification de la fréquence des tâches

Faire exécuter les tâches à des intervalles appropriés permet d'optimiser les ressources système. Des tâches très fréquentes (comme toutes les minutes) peuvent entraîner une charge système inutile, tandis que des planifications moins fréquentes (comme toutes les 5 minutes) offrent souvent un meilleur équilibre entre rapidité et efficacité pour les tâches de surveillance.

Créer des cron jobs plus avancés

Maintenant que vous maîtrisez les bases, créons un cron job plus avancé qui enregistre les informations système.

Créer une tâche d'enregistrement des informations système

Créons un cron job qui enregistrera les informations sur l'utilisation de la mémoire du système toutes les heures. Ce type de surveillance peut être utile pour suivre les performances du système au fil du temps.

Tout d'abord, créons un script shell qui collectera les informations sur la mémoire :

nano ~/project/memory_check.sh

Dans l'éditeur nano, ajoutez le contenu suivant :

#!/bin/bash
echo "Memory check at $(date)" >> ~/project/memory_log.txt
free -m >> ~/project/memory_log.txt
echo "--------------------" >> ~/project/memory_log.txt

Ce script va :

  1. Ajouter une horodatation au journal
  2. Exécuter la commande free -m pour afficher l'utilisation de la mémoire en mégaoctets
  3. Ajouter une ligne de séparation pour faciliter la lecture

Enregistrez et quittez l'éditeur (appuyez sur Ctrl+O, Entrée, puis Ctrl+X).

Maintenant, rendez le script exécutable :

chmod +x ~/project/memory_check.sh

Vous pouvez tester le script pour vous assurer qu'il fonctionne correctement :

~/project/memory_check.sh

Vérifiez le fichier de sortie :

cat ~/project/memory_log.txt

Vous devriez voir une sortie qui inclut l'horodatation, les informations sur l'utilisation de la mémoire et une ligne de séparation.

Maintenant, planifions l'exécution de ce script toutes les heures à l'aide de crontab :

crontab -e

Ajoutez la ligne suivante (tout en conservant votre cron job existant) :

0 * * * * ~/project/memory_check.sh

Cela exécutera le script de vérification de la mémoire au début de chaque heure. Enregistrez et quittez l'éditeur.

Pour vérifier que le nouveau cron job a été ajouté :

crontab -l

Vous devriez voir les deux cron jobs :

*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh

Utilisation de chaînes de temps spéciales

Cron prend également en charge certaines chaînes de temps spéciales pour les modèles de planification courants :

  • @hourly - Identique à 0 * * * *
  • @daily - Identique à 0 0 * * *
  • @weekly - Identique à 0 0 * * 0
  • @monthly - Identique à 0 0 1 * *
  • @reboot - S'exécuter au démarrage du système

Ajoutons une tâche qui s'exécute quotidiennement en utilisant ces chaînes spéciales :

crontab -e

Ajoutez la ligne suivante :

@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt

Enregistrez et quittez l'éditeur. Cela créera une nouvelle entrée dans le fichier daily_check.txt une fois par jour à minuit.

Pour vérifier que le nouveau cron job a été ajouté :

crontab -l

Vous devriez maintenant voir les trois cron jobs :

*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt

Gestion de la sortie des cron jobs

Par défaut, cron envoie toute sortie des tâches à l'e-mail de l'utilisateur. Si vous souhaitez ignorer complètement la sortie, vous pouvez la rediriger vers /dev/null :

*/10 * * * * ~/project/some_script.sh > /dev/null 2>&1

C'est une pratique courante pour les scripts qui produisent une sortie que vous n'avez pas besoin de conserver.

Résumé

Félicitations pour avoir terminé le laboratoire sur la planification de tâches Linux. Vous savez maintenant utiliser l'utilitaire crontab pour automatiser des tâches sous Linux.

Au cours de ce laboratoire, vous avez accompli les points suivants :

  • Créé un cron job de base pour enregistrer la date et l'heure à intervalles réguliers
  • Appris la syntaxe de crontab et la signification des champs de temps (minute, heure, jour, mois, jour de la semaine)
  • Modifié des cron jobs existants pour changer leur fréquence d'exécution
  • Créé un script shell pour la surveillance système et l'avez planifié pour qu'il s'exécute toutes les heures
  • Utilisé des chaînes de temps spéciales comme @daily pour les modèles de planification courants
  • Appris à gérer la sortie des cron jobs

Ces compétences sont essentielles pour tout utilisateur Linux ou administrateur système. Avec crontab, vous pouvez automatiser des tâches de routine telles que :

  • L'entretien et le nettoyage du système
  • La sauvegarde et la synchronisation des données
  • La rotation et la gestion des journaux
  • Les vérifications et la surveillance régulières de l'état du système
  • La génération de rapports planifiés

En mettant en œuvre une planification efficace des tâches, vous pouvez augmenter la fiabilité du système, réduire l'intervention manuelle et optimiser votre flux de travail. N'oubliez pas de tester toujours vos cron jobs de manière approfondie et de prendre en compte l'impact des tâches planifiées sur les performances du système.

Continuez à explorer les capacités de crontab et d'autres outils de planification Linux pour améliorer encore vos compétences en automatisation.