Comment configurer un plan de maintenance avec des tâches cron ? Guide complet

Rate this post

Automatisez la maintenance de votre serveur avec cron

La maintenance régulière d’un serveur est essentielle pour garantir sa sécurité, ses performances et sa fiabilité. Cependant, l’effectuer manuellement est chronophage et source d’erreurs. Les tâches cron, disponibles sur tous les systèmes Unix/Linux, permettent d’automatiser ces opérations. Ce guide vous explique comment configurer un plan de maintenance complet avec des tâches cron, en couvrant les sauvegardes, les mises à jour, le nettoyage des logs, la surveillance des ressources et plus encore.

Qu’est-ce qu’une tâche cron et comment fonctionne-t-elle ?

cron est un gestionnaire de tâches planifiées sous Linux/Unix. Il exécute des commandes ou scripts à des intervalles définis via le fichier crontab. Chaque ligne du crontab suit un format spécifique : minute, heure, jour du mois, mois, jour de la semaine, puis la commande à exécuter.

Syntaxe de base :

* * * * * commande
│ │ │ │ │
│ │ │ │ └── Jour de la semaine (0-7, dimanche=0 ou 7)
│ │ │ └──── Mois (1-12)
│ │ └────── Jour du mois (1-31)
│ └──────── Heure (0-23)
└────────── Minute (0-59)

Par exemple, pour exécuter une tâche tous les jours à 2h30 du matin : 30 2 * * * /chemin/script.sh

Planifier les sauvegardes automatiques

Les sauvegardes sont la pierre angulaire de toute maintenance. Avec cron, vous pouvez automatiser les sauvegardes de bases de données, de fichiers et de configurations.

Sauvegarde de base de données MySQL/MariaDB

Créez un script backup_db.sh :

#!/bin/bash
mysqldump -u utilisateur -p'motdepasse' --all-databases > /backups/db_$(date +%Y%m%d).sql

Planifiez-le dans le crontab :

0 3 * * * /usr/local/bin/backup_db.sh

Cela exécute la sauvegarde chaque jour à 3h du matin.

Sauvegarde de fichiers et dossiers

Utilisez rsync pour synchroniser les fichiers vers un serveur distant :

0 4 * * * rsync -avz /var/www /backups/

Automatiser les mises à jour système et applicatives

Les mises à jour de sécurité sont cruciales. Vous pouvez planifier l’installation des mises à jour avec apt (Debian/Ubuntu) ou yum (CentOS/RHEL).

Exemple pour Debian/Ubuntu :

0 5 * * 1 apt update && apt upgrade -y && apt autoremove -y

Cette tâche s’exécute tous les lundis à 5h du matin.

Attention : Testez d’abord les mises à jour sur un environnement de staging pour éviter les régressions.

Nettoyage des logs et fichiers temporaires

Les logs peuvent saturer l’espace disque. Automatisez leur rotation et suppression.

Rotation des logs avec logrotate

logrotate est souvent déjà configuré via cron. Vérifiez votre configuration dans /etc/logrotate.conf. Vous pouvez ajouter des règles personnalisées.

Suppression des fichiers temporaires

Créez un script qui supprime les fichiers de plus de 7 jours dans /tmp :

0 6 * * * find /tmp -type f -atime +7 -delete

Surveillance des ressources système

Surveillez l’utilisation du CPU, de la mémoire et de l’espace disque, et recevez des alertes par email.

Exemple : script check_disk.sh

#!/bin/bash
THRESHOLD=90
CURRENT=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
    echo "Espace disque critique : $CURRENT%" | mail -s "Alerte disque" admin@example.com
fi

Planifiez-le toutes les heures :

0 * * * * /usr/local/bin/check_disk.sh

Vérification de l’intégrité des fichiers et sécurité

Utilisez aide ou tripwire pour détecter les modifications non autorisées. Planifiez une vérification hebdomadaire :

0 7 * * 0 /usr/sbin/aide --check

Redémarrage programmé des services

Certains services nécessitent un redémarrage périodique pour libérer les ressources. Par exemple, redémarrer Apache chaque nuit :

0 4 * * * systemctl restart apache2

Bonnes pratiques pour votre plan de maintenance cron

  • Utilisez des scripts externes plutôt que des commandes longues dans le crontab pour faciliter la maintenance.
  • Redirigez les sorties vers un fichier de log : 0 2 * * * /script.sh >> /var/log/maintenance.log 2>&1
  • Testez vos scripts manuellement avant de les planifier.
  • Évitez les heures de pointe : planifiez les tâches lourdes la nuit ou le week-end.
  • Surveillez les tâches cron : vérifiez les logs et configurez des alertes en cas d’échec.
  • Documentez votre crontab avec des commentaires (ajoutez # en début de ligne).

Exemple complet de crontab pour la maintenance

# Sauvegarde base de données - tous les jours à 3h
0 3 * * * /opt/scripts/backup_db.sh

# Mise à jour système - tous les lundis à 5h
0 5 * * 1 /opt/scripts/update_system.sh

# Nettoyage logs - chaque nuit à 2h
0 2 * * * /opt/scripts/clean_logs.sh

# Surveillance disque - toutes les heures
0 * * * * /opt/scripts/check_disk.sh

# Vérification intégrité - dimanche à 7h
0 7 * * 0 /usr/sbin/aide --check

Erreurs fréquentes à éviter

  • Oublier les chemins absolus : cron ne charge pas le PATH de l’utilisateur. Utilisez toujours des chemins complets.
  • Négliger les permissions : les scripts doivent être exécutables (chmod +x).
  • Ignorer les variables d’environnement : si votre script utilise des variables, définissez-les dans le script.
  • Planifier trop de tâches simultanément : cela peut surcharger le serveur.
  • Ne pas vérifier les logs : consultez régulièrement /var/log/syslog ou /var/log/cron.

Plan de maintenance typique pour un serveur web

Tâche Fréquence Heure
Sauvegarde base de données Quotidienne 3h00
Sauvegarde fichiers Quotidienne 4h00
Mise à jour système Hebdomadaire (lundi) 5h00
Nettoyage logs Quotidienne 2h00
Surveillance disque Toutes les heures 0
Vérification intégrité Hebdomadaire (dimanche) 7h00

FAQ : Questions fréquentes sur les tâches cron et la maintenance

Comment éditer le crontab ?

Utilisez la commande crontab -e pour éditer votre crontab personnel. Pour le crontab système, éditez /etc/crontab ou placez des scripts dans /etc/cron.d/.

Comment exécuter une tâche toutes les minutes ?

Utilisez * * * * * commande. Cela exécute la commande à chaque minute.

Comment exécuter une tâche toutes les 30 minutes ?

Utilisez */30 * * * * commande.

Comment exécuter une tâche à des heures spécifiques ?

Par exemple, à 8h, 12h et 16h : 0 8,12,16 * * * commande.

Comment exécuter une tâche uniquement en semaine ?

Utilisez 0 6 * * 1-5 commande (du lundi au vendredi).

Comment désactiver temporairement une tâche cron ?

Commentez la ligne avec # dans le crontab, ou déplacez le script hors du répertoire cron.

Prochaines étapes : optimisez votre plan de maintenance

Maintenant que vous savez configurer un plan de maintenance avec cron, pensez à :

  • Centraliser les logs avec un outil comme Logstash ou Graylog.
  • Automatiser les sauvegardes hors site vers le cloud (AWS S3, Google Cloud Storage).
  • Mettre en place une supervision avec Nagios, Zabbix ou Prometheus.
  • Documenter votre plan et le partager avec votre équipe.

La maintenance automatisée vous libère du temps et réduit les risques d’erreur humaine. Commencez par les tâches les plus critiques et enrichissez progressivement votre crontab.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *