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 :
- Minute (0-59)
- Heure (0-23)
- Jour du mois (1-31)
- Mois (1-12)
- 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+Opour enregistrer, puis appuyez surEntréepour confirmer, et enfin appuyez surCtrl+Xpour quitter. - Si vous utilisez vim, appuyez sur
Échap, puis tapez:wqet appuyez surEntré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 minutes0 * * * *- S'exécuter au début de chaque heure0 0 * * *- S'exécuter à minuit tous les jours0 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 :
- Ajouter une horodatation au journal
- Exécuter la commande
free -mpour afficher l'utilisation de la mémoire en mégaoctets - 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
@dailypour 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.



