Automatisation des tâches avec cron
et at
1. Pourquoi l'automatisation est-elle nécessaire ?
L'automatisation des tâches, c'est la base de la base pour tout administrateur système, surtout sous Linux. Imagine un travail sans automatisation : chaque matin, tu ouvres le terminal et tu tapes la même commande pour sauvegarder tes données, les archiver, les envoyer sur un serveur et nettoyer les anciens logs. Une semaine de cette routine, et tu penseras sérieusement à changer de métier… Mais non, on est là pour te montrer comment transformer la machine en ton fidèle assistant.
Le sujet d'aujourd'hui, c'est la magie du temps et des tâches. On va apprendre à automatiser les processus au niveau du système d'exploitation grâce aux outils incroyables cron
et at
. Ces outils te feront gagner un temps fou, et parfois même des nerfs.
L'automatisation, c'est une bouée de sauvetage pour toute tâche répétitive. Par exemple, tu as un script qui génère un rapport pour ton boss. Ce rapport est requis chaque matin à 8h00. Au lieu de te lever tôt pour lancer manuellement le script (et risquer de rester coincé avec ta tasse de café et oublier de le lancer), tu peux configurer cron
pour exécuter cette tâche automatiquement.
cron
— c'est un outil pour les tâches régulières qui se répètent à des moments précis.
at
— c'est un utilitaire pour des tâches uniques qui doivent être exécutées à un moment précis.
2. Travailler avec cron
C'est quoi cron
?
cron
— c'est un démon (processus système) qui fonctionne en arrière-plan et exécute des tâches programmées à des moments spécifiques. Les horaires de ces tâches sont stockés dans ce qu'on appelle les crontab
— ce sont des fichiers texte. Chaque utilisateur du système peut avoir son propre crontab
.
Votre première tâche dans cron
Voici à quoi ressemble une commande de base pour travailler avec cron
:
crontab -e
Cette commande ouvre le crontab
de l'utilisateur actuel pour modification. Vous pouvez ajouter des tâches en indiquant le format de l'horaire.
Syntaxe de l'horaire
Une ligne dans un crontab
se compose de six champs :
* * * * * COMMANDE
- - - - -
| | | | └─ Jour de la semaine (0–7, où 0 et 7 représentent dimanche)
| | | └── Mois (1–12)
| | └─── Jour du mois (1–31)
| └──── Heures (0–23)
└───── Minutes (0–59)
Exemple : exécutez echo "Hello, Linux"
chaque jour à midi :
0 12 * * * echo "Hello, Linux"
Pratique : lançons une tâche simple
Ouvrez votre
crontab
pour modification :crontab -e
Ajoutez cette ligne :
*/5 * * * * echo "Hello, world! The time is $(date)" >> ~/cron_test.log
Cette tâche ajoutera une ligne avec l'heure actuelle dans le fichier
cron_test.log
toutes les 5 minutes. Sauvegardez le fichier et quittez.Vérifiez si la tâche a démarré :
tail -f ~/cron_test.log
Après 5 minutes, vous devriez voir une nouvelle entrée dans le fichier.
Vérification des tâches planifiées
Pour vérifier les tâches actuelles :
crontab -l
Supprimer des tâches
Pour supprimer toutes les tâches d'un crontab
:
crontab -r
Exemples réels d'utilisation de cron
Archivage des fichiers
Supposons que vous souhaitez archiver des fichiers du répertoire /var/logs
chaque nuit à 3 heures :
Écrivez un script :
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
Définissez un horaire dans le
crontab
:0 3 * * * /path/to/script.sh
Et voilà ! Vous n'oublierez plus jamais de faire une sauvegarde.
Notification de charge système
Par exemple, vous souhaitez recevoir une notification si la charge CPU dépasse 80 % :
Écrivez un script :
#!/bin/bash LOAD=$(uptime | awk '{print $10}' | sed 's/,//') if (( $(echo "$LOAD > 0.80" | bc -l) )); then echo "Charge CPU élevée : $LOAD" | mail -s "Alerte CPU" you@example.com fi
Configurez un horaire :
*/10 * * * * /path/to/cpu_check.sh
3. Travailler avec at
at
permet d'exécuter une tâche unique à un moment précis. Contrairement à cron
, les tâches de at
ne se répètent pas. C'est pratique pour des tâches comme "fais ça demain à 9 heures du matin".
Une tâche simple avec at
Voilà un exemple pour planifier une tâche :
echo "echo 'Hello, Linux!'" | at now + 1 minute
Cette commande exécutera la commande echo 'Hello, Linux!'
dans une minute.
Vous pouvez spécifier une heure et une date précises :
echo "echo 'Backup completed!'" | at 10:30 AM tomorrow
Gestion des tâches at
Après avoir ajouté une tâche, vous pouvez voir la liste :
atq
Exemple de sortie :
1 Tue Oct 31 10:30:00 2023 a user
2 Tue Oct 31 11:00:00 2023 a user
Pour supprimer une tâche :
atrm <job_id>
Pratique : utilisation de at
pour les notifications
Créez une tâche pour une notification dans 2 minutes :
echo "notify-send 'Time is up!'" | at now + 2 minutes
Vérifiez la liste des tâches :
atq
Attendez que la fenêtre contextuelle apparaisse dans 2 minutes.
4. Erreurs courantes avec cron
et at
L'un des problèmes les plus fréquents est de spécifier un chemin incorrect vers le script ou la commande. N'oublie pas que cron
s'exécute dans un environnement minimal, il peut donc ne pas connaître tes variables comme PATH
. Le meilleur moyen est d'utiliser des chemins absolus.
Par exemple, si tu veux lancer un script Python :
*/30 * * * * /usr/bin/python3 /path/to/script.py
Assure-toi également que le script a les droits d'exécution :
chmod +x /path/to/script.sh
Où cela peut servir ?
Les compétences en automatisation sont nécessaires dans presque toutes les professions liées à l'IT. Tu peux utiliser ces connaissances pour :
- Automatiser des tâches système répétitives.
- Configurer des sauvegardes périodiques.
- Surveiller l'état des serveurs.
- Répondre aux questions sur
cron
et l'automatisation lors des entretiens.
Si tu travailles dans le domaine DevOps, l'administration système ou si tu veux simplement être plus efficace, comprendre cron
et at
te permettra de te démarquer et de gagner beaucoup de temps.
Maintenant, tu sais comment faire travailler Linux pour toi. La prochaine fois que quelqu'un se plaindra des tâches répétitives, souris simplement, car toi, tu es un maître de l'automatisation !
GO TO FULL VERSION