đ§ Introduction
Sous Linux, tout tourne autour des services et de la supervision. Un service qui tombe, une interface rĂ©seau qui gĂšle, un disque qui dĂ©borde⊠et câest souvent le script Bash qui vient sauver la mise.
Ce projet relie scripting et administration systÚme réelle, pour comprendre le comment et le pourquoi de chaque commande : gérer, diagnostiquer, surveiller et automatiser.
âïž Objectifs & pĂ©rimĂštre
Pourquoi relier scripting et administration systĂšme
La ligne de commande nâest pas quâun outil de dĂ©pannage : elle devient un levier dâautomatisation.
Un bon script Bash peut :
- Redémarrer proprement un service aprÚs plantage.
- Surveiller les ressources en continu.
- Générer un rapport synthétique sans outil tiers.
Bref : transformer lâadmin en chef dâorchestre de son infrastructure.
Pré-requis
- Distribution Linux basĂ©e sur systemd (Ubuntu, Debian, CentOS, RockyâŠ).
- AccĂšs
sudo. - Quelques notions de bash scripting.
đ§ Gestion des services Linux
Concept
Un service (daemon) est un programme qui tourne en arriĂšre-plan â web server, base de donnĂ©es, agent de monitoring, etc.systemd les gĂšre via des unitĂ©s (.service, .socket, .timer).
Pourquoi
Comprendre comment les services se lancent et meurent évite les comportements imprévisibles (ex: un nginx qui refuse de redémarrer aprÚs un crash).
Exemples
# Lister tous les services actifs
systemctl list-units --type=service --state=running
# Vérifier le statut du service ssh
systemctl status ssh.service
# Démarrer et activer au boot
sudo systemctl enable --now nginx
# Consulter les logs récents
journalctl -u nginx -n 20
Astuce
đ systemctl is-failed est pratique pour un check automatique dans un script.
Compatibilité SysV
Pour dâanciennes distros :
service apache2 restart
Mais privilégiez systemctl dÚs que possible : plus cohérent, plus complet.
đ§ Surveillance du systĂšme
Concept
Surveiller, câest observer lâĂ©volution du systĂšme : charge CPU, mĂ©moire, I/O disque, rĂ©seau.
Pourquoi
La supervision proactive permet dâanticiper les pannes avant quâelles ne frappent.
Exemples progressifs
# Afficher les 10 processus les plus consommateurs
top
# Visualiser les statistiques de mémoire
vmstat 5
# Surveiller les I/O disque toutes les 2 secondes
iostat -xz 2
# Vérifier la place disque
df -hT
du -sh /var/log/* | sort -h
Astuce
vmstat 1est excellent pour les pics courts.iostat -xpermet de repĂ©rer un disque saturĂ© par ses %utilisation.du --max-depth=1 /pour repĂ©rer les gros rĂ©pertoires en un clin dâĆil.
đ RĂ©seau : interfaces et connectivitĂ©
Concept
Le rĂ©seau sous Linux est un ensemble dâinterfaces (eth0, ens18, lo), de routes et de sockets.
Le diagnostic réseau est une science du détail : vérifier lien physique, IP, DNS, route, puis connectivité applicative.
Commandes essentielles
# Informations sur les interfaces
ip addr show
ip link set eth0 up
# Test de connectivité
ping -c 4 8.8.8.8
# Résolution DNS
nslookup msinfra.fr
# Vérifier les ports ouverts
ss -tulpen
# Tester un service web
curl -I https://msinfra.fr
Astuce
ssremplacenetstat(plus rapide, plus moderne).curl -w "%{http_code}"permet de tester un code HTTP sans bruit.
đ Monitoring & rapport Bash
Créer un mini monitoring maison en quelques lignes de Bash est à la fois formateur et pratique.
Concept
Un script Bash peut collecter les mĂ©triques systĂšme, comparer avec des seuils, puis exporter un rapport (mail, log, JSONâŠ).
Pourquoi
Utile en cron (surveillance quotidienne) ou pour des intégrations légÚres sans stack lourde.
Exemple simple
#!/bin/bash
cpu=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')
disk=$(df / | awk 'NR==2 {print $5}')
mem=$(free -m | awk 'NR==2 {print $3*100/$2}')
echo "$(date): CPU=$cpu% DISK=$disk MEM=$mem%" >> /var/log/mini-monitor.log
Version évoluée
Avec alerte mail :
if (( $(echo "$cpu > 85" | bc -l) )); then
echo "ALERTE CPU Ă $cpu%" | mail -s "Alerte systĂšme" admin@msinfra.fr
fi
đ§© Cas pratiques
- Service qui ne démarre pas
â VĂ©rifierjournalctl -xe, dĂ©pendances viasystemctl list-dependencies. - Disque saturĂ©
âdu -h --max-depth=1 /var | sort -hr | head.
Supprimer logs ou configurer logrotate. - Interface down
âip link set eth0 up, vĂ©rifier/etc/network/interfacesounmcli. - Timeout HTTP
â Tester aveccurl -v, vĂ©rifier firewall (ufw status) et proxy.
đ§ź Exercices pratiques
| Exercice 1 | Exercice 2 |
|---|---|
CrĂ©e un script qui liste les services failed et tente de les redĂ©marrer automatiquement. | Ăcris un script qui affiche les 5 plus gros dossiers dans /var et envoie une alerte si >80% disque. |
| Exercice 3 | Exercice 4 |
| Fait un diagnostic réseau : ping, DNS, port 443, et format JSON. | Construis un mini monitoring qui log CPU/RAM/DISK toutes les 10 min en CSV. |
đŹ Retour dâexpĂ©rience du lecteur
đ Partage en commentaire ton outil prĂ©fĂ©rĂ© de supervision ou ton script Bash maison !
Les retours des lecteurs enrichissent la pratique de tous.
đ§ Recommandations / Autres solutions
đ§ Pour aller plus loin avant ou aprĂšs ce projet :
Avant de plonger dans les tableaux et structures, jette un Ćil Ă ces articles complĂ©mentaires :
- đ§ Bases du scripting Bash â comprendre le shebang, les variables et la structure dâun script.
- âïž Variables et opĂ©rateurs en Bash â tout sur les variables spĂ©ciales, dâenvironnement et les opĂ©rateurs.
- đ Boucles et conditions en Bash â la logique rĂ©pĂ©titive : for, while, if, case.
- đ§© Tableaux, dictionnaires – structures avancĂ©es en Bash – Part 4
- đ§ Gestion des erreurs et dĂ©bogage en Bash – maĂźtriser la gestion des erreurs Bash, du
set -eautrap ERR– Part 5 - đ§Ÿ Fichiers, logs et flux en Bash – Audit & Maintenance – Part 6
- Outils avancés :
htop,glances,bmon,atop. - Monitoring pro : Prometheus + Grafana, Zabbix, ou Netdata.
- Centralisation :
rsyslog+ Loki pour agréger les logs.
đ§© Conclusion
Tu maßtrises maintenant la gestion des services, la surveillance du systÚme et la supervision réseau avec Bash.
Ces fondations tâouvrent la voie vers des environnements plus industrialisĂ©s : automatisation, Ansible, PrometheusâŠ
Et toi, comment supervises-tu ton infra ? Partage ton approche en commentaire !
đ§ Solutions des exercices

Exercice 1 : Redémarrage automatique
#!/bin/bash
for s in $(systemctl list-units --type=service --state=failed | awk '{print $1}'); do
echo "Redémarrage de $s..."
systemctl restart "$s"
done
Exercice 2 : Alerte disque
used=$(df / | awk 'NR==2 {gsub("%",""); print $5}')
if [ "$used" -gt 80 ]; then
echo "Disque presque plein ($used%) sur $(hostname)" | mail -s "Alerte disque" admin@msinfra.fr
fi
Exercice 3 : Diagnostic réseau
ping -c1 8.8.8.8 > /dev/null && echo "Ping OK"
nslookup msinfra.fr
curl -I https://msinfra.fr
Exercice 4 : Mini monitoring CSV
echo "Date,CPU,RAM,DISK" > /var/log/mini-monitor.csv
while true; do
cpu=$(top -bn1 | awk '/Cpu/ {print 100 - $8}')
ram=$(free -m | awk 'NR==2 {print $3*100/$2}')
disk=$(df / | awk 'NR==2 {gsub("%",""); print $5}')
echo "$(date),$cpu,$ram,$disk" >> /var/log/mini-monitor.csv
sleep 600
done
