
L’espace disque, c’est le genre de chose qu’on oublie… jusqu’au moment où une base de données plante, un site devient inaccessible ou qu’un backup échoue sans prévenir.
Plutôt que d’attendre la panne, autant anticiper avec une alerte simple, efficace, et surtout silencieuse tant que tout va bien.
Voici comment mettre en place une alerte par e-mail dès que l’espace libre passe sous les 10 %, avec un script bash minimal et une tâche cron
.
1. Le principe
On va :
- vérifier régulièrement (toutes les heures par exemple) l’espace disque disponible,
- détecter si une partition est sous les 10 % de libre,
- envoyer un mail automatiquement si c’est le cas.
Pas besoin de Nagios, Zabbix ou autre. Un simple script, un df
, et mail
suffisent.
2. Prérequis
Assurez-vous que le serveur peut envoyer des e-mails en ligne de commande. Vous pouvez utiliser :
mailutils
(pour Debian/Ubuntu)bsd-mailx
(selon la distribution)- ou un
ssmtp
,msmtp
,postfix
,sendmail
, selon votre stack
Exemple d’installation :
sudo apt install mailutils
Test rapide :
echo "Test mail" | mail -s "Test sujet" you@example.com
3. Le script de vérification
Voici un script minimaliste, à enregistrer dans /usr/local/bin/disk_alert.sh
:
#!/bin/bash
# Seuil d'alerte en pourcentage
THRESHOLD=10
# Adresse e-mail de destination
EMAIL="admin@example.com"
# Parcourt toutes les partitions montées sauf tmpfs, devtmpfs, etc.
df -hP | grep -vE '^Filesystem|tmpfs|udev' | while read -r line; do
USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
MOUNT=$(echo $line | awk '{print $6}')
if [ "$USAGE" -ge $((100 - $THRESHOLD)) ]; then
echo "Attention : la partition $MOUNT utilise $USAGE % de l’espace disque." | \
mail -s "Alerte : espace disque faible sur $HOSTNAME" "$EMAIL"
fi
done
💡 Le script ne déclenche une alerte que si une partition passe sous le seuil.
4. Rendre le script exécutable
sudo chmod +x /usr/local/bin/disk_alert.sh
Testez-le à la main pour voir s’il envoie bien un mail (vous pouvez temporairement baisser le seuil pour tester).
5. Créer une tâche cron
Vous pouvez l’exécuter toutes les heures (ou à votre rythme) via cron
.
Pour l’utilisateur root (ou un autre utilisateur), éditez la crontab :
sudo crontab -e
Ajoutez la ligne suivante :
0 * * * * /usr/local/bin/disk_alert.sh
Cette tâche sera lancée à chaque début d’heure.
🕒 Vous pouvez ajuster la fréquence (par exemple toutes les 15 minutes avec
*/15 * * * *
).
6. Quelques améliorations possibles
- Logs : rediriger la sortie du script dans un fichier de log pour archivage :
... | tee -a /var/log/disk_alert.log
-
Limiter les doublons : vous pouvez stocker un état dans un fichier
.last_alert
pour éviter d’envoyer un mail toutes les heures si rien n’a changé. -
Alerte sur un seul disque : filtrez sur
/
,/var
,/home
selon vos besoins avecgrep
.
7. Fonctionne sur…
Ce script fonctionne sur tout serveur Linux classique :
- VPS chez OVH, Hetzner, Scaleway, D4.FR
- Serveur dédié (en particulier si vous faites de l’auto-hébergement)
- Raspberry Pi ou NAS auto-gérés
En résumé
Avec quelques lignes de bash, un paquet mailutils et une crontab, vous pouvez :
- détecter à l’avance les saturations de disque,
- recevoir un e-mail clair avec l’info utile,
- éviter des plantages silencieux à cause d’un
/var
ou d’un/
plein.
Ce n’est pas de la supervision avancée, mais c’est souvent suffisant pour être réactif sans s’encombrer.