CodeGym /Cours /Docker SELF /Automatisation des tâches avec cron et at

Automatisation des tâches avec cron et at

Docker SELF
Niveau 3 , Leçon 5
Disponible

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

  1. Ouvrez votre crontab pour modification :

    crontab -e
    
  2. 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.

  3. 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 :

  1. Écrivez un script :

    #!/bin/bash
    tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
  2. 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 % :

  1. É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
  2. 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

  1. Créez une tâche pour une notification dans 2 minutes :

    echo "notify-send 'Time is up!'" | at now + 2 minutes
    
  2. Vérifiez la liste des tâches :

    atq
    
  3. 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 !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION