Dans cette leçon, tu vas découvrir watch, un outil simple et puissant pour exécuter une commande périodiquement et afficher ses résultats en temps réel dans le terminal. Idéal pour surveiller l'état d'un système, suivre l'évolution d'un processus ou monitorer des ressources.
watch est l'outil parfait quand tu veux :
Au lieu de répéter manuellement une commande avec ↑ + Enter, watch le fait pour toi, automatiquement.
watch [options] commandePar défaut, watch rafraîchit l'affichage toutes les 2 secondes.
| Option | Description |
|---|---|
-n secondes | Intervalle de rafraîchissement en secondes |
-d | Met en surbrillance les différences entre deux actualisations |
-d=cumulative | Surligne toutes les différences cumulées depuis le début |
-t | Masque l'en-tête avec la date et la commande |
-b | Émet un beep quand la commande retourne une erreur |
-e | Pause si la commande échoue, reprend avec une touche |
-g | Quitte quand les sorties changent (gate mode) |
# Surveillance de l'espace disque (rafraîchissement toutes les 2 secondes)
watch df -h
# Avec un intervalle personnalisé de 5 secondes
watch -n 5 df -h
# Exclure les systèmes de fichiers virtuels (tmpfs, devtmpfs, etc.)
watch -n 3 df -h --exclude-type=tmpfs --exclude-type=devtmpfs# Surveillance de la mémoire et du swap
watch -n 1 free -h
# Avec détail par processus (top 10)
watch -n 2 'free -h && echo "---" && ps aux --sort=-%mem | head -11'# Voir les connexions réseau actives
watch -n 3 ss -tunap
# Ou avec netstat
watch -n 5 netstat -tunap
# Surveiller les connexions établies uniquement
watch -n 2 'ss -t state established'L'option -d est particulièrement utile pour repérer instantanément ce qui change :
# Surbrillance des différences (valeurs qui changent)
watch -d df -h
# Surbrillance cumulative (accumule les différences)
watch -d=cumulative df -h
# Surveiller les processus qui utilisent le plus de CPU
watch -d 'ps aux --sort=-%cpu | head -10'# Vue plus propre sans l'en-tête
watch -t df -h
# Combine avec d'autres options pour une vue compacte
watch -t -n 10 'echo "=== $(date +%H:%M:%S) ===" && df -h / /home'# Suivre l'évolution de la taille d'un fichier en cours de téléchargement
watch -n 5 'ls -lh fichier.tar.gz'
# Avec statistiques dSpace libre
watch -n 3 'ls -lh fichier.tar.gz && df -h .'# Voir les changements dans un dossier
watch -n 2 'ls -lrt /tmp/mon_repertoire/ | tail -5'
# Compter les fichiers en temps réel
watch -n 5 'echo "Fichiers: $(ls /tmp/mon_repertoire/ | wc -l)"'# Simuler une surveillance de log en croissance
watch -n 1 'tail -3 /var/log/syslog'
# Surveiller les entrées récentes dans auth.log (échecs de connexion)
watch -n 5 'tail -10 /var/log/auth.log'# Tableau de bord système compact
watch -n 2 '
echo "=== $(date +%H:%M:%S) ===" ;
echo "--- Disque ---" ;
df -h / | tail -1 ;
echo "--- Mémoire ---" ;
free -h | grep Mem ;
echo "--- Charge ---" ;
uptime ;
echo "--- Top 3 CPU ---" ;
ps aux --sort=-%cpu | head -4'Le mode -g quitte automatiquement quand la sortie change :
# Quitte quand la taille du fichier change
watch -g ls -l fichier.txt
# Quitte quand un processus disparaît
watch -g 'ps aux | grep mon_processus'
# Pratique pour attendre qu'un téléchargement termine
watch -g 'ls -l fichier.iso && echo "OK"'-g surveille les changements de sortie. Si ta commande produit une sortie légèrement différente à chaque exécution (horodatage, etc.), watch quittera immédiatement.#watch interprète les tubes comme faisant partie de la commande shell
#Utilise les quotes pour que le tube soit exécuté par le shell
# Compter les lignes d'un fichier de log
watch 'wc -l /var/log/syslog'
# Filtrer les résultats d'un ps
watch 'ps aux | grep nginx'
# Surveiller les processus d'un utilisateur
watch "ps -u $USER -f"Pour quitter watch, utilise :
Ctrl + C — Arrêt immédiatCtrl + Z — Met en pause (puis kill %1 pour tuer)q — Quitte si activé (variable d'environnement WATCH_INTERVAL)#!/bin/bash
# script_surveillance.sh
echo "Surveillance système — Ctrl+C pour arrêter"
echo ""
# Surveillance interactive
watch -n 5 -d '
echo "=== $(date +%d/%m/%Y\ %H:%M:%S) ===" ;
echo "Disque :" ;
df -h / | tail -1 ;
echo "Mémoire :" ;
free -h | grep Mem ;
echo "Charge :" ;
uptime'| Commande | Description |
|---|---|
watch df -h | Surveillance espace disque (intervalle 2s) |
watch -n 5 df -h | Intervalle de 5 secondes |
watch -d df -h | Avec surbrillance des différences |
watch -d=cumulative df -h | Surlignage cumulatif |
watch -t df -h | Sans en-tête |
watch -g ls -l fichier | Quitte quand changement détecté |
watch -n 1 'ps aux | grep nginx' | Surveillance processus nginx |
watch -n 10 'tail -5 /var/log/syslog' | Surveillance log en temps réel |
Objectif : Utiliser watch pour surveiller différents aspects de ton système.
# 1. Surveillance de l'espace disque
watch -n 3 df -h
# Pendant que c'est actif, ouvre un autre terminal et crée un gros fichier :
# dd if=/dev/zero of=test.img bs=1M count=100
# Observe le changement s'afficher en temps réel dans watch !
# 2. Surveillance des processus mémoire
# Ouvre watch dans un terminal :
watch -n 2 'free -h && echo "---" && ps aux --sort=-%mem | head -6'
# Dans un autre terminal, ouvre une application lourde (navigateur, etc.)
# et observe les changements
# 3. Mode gate pour attendre un événement
# Lance :
watch -n 1 -g 'ls -l ~/Bureau/ | wc -l'
# Crée un fichier sur le Bureau :
# touch ~/Bureau/fichier_attendu.txt
# watch quit automatiquement dès que le nombre de fichiers change !
Bonus : Combine plusieurs commandes dans un seul watch pour créer un mini tableau de bord personnalisé avec horodatage.
watch est un outil simple mais incroyablement utile. Il transforme n'importe quelle commande en moniteur temps réel, ce qui en fait un allié précieux pour le dépannage, la surveillance système et l'observation de processus en cours. Combine-le avec tmux (leçon 27) pour avoir plusieurs surveillances en parallèle dans des terminaux split !