← Sommaire SkyLinux

64 - watch — Surveillance en temps réel

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.

1. Pourquoi utiliser watch ?

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.

2. Syntaxe de base

watch [options] commande

Par défaut, watch rafraîchit l'affichage toutes les 2 secondes.

3. Options essentielles

OptionDescription
-n secondesIntervalle de rafraîchissement en secondes
-dMet en surbrillance les différences entre deux actualisations
-d=cumulativeSurligne toutes les différences cumulées depuis le début
-tMasque l'en-tête avec la date et la commande
-bÉmet un beep quand la commande retourne une erreur
-ePause si la commande échoue, reprend avec une touche
-gQuitte quand les sorties changent (gate mode)

4. Exemples fondamentaux

Surveillance simple de l'espace disque

# 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

Suivre l'utilisation mémoire

# 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'

Monitorer les connexions réseau

# 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'

5. Différenciation visuelle avec -d

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'
💡 Astuce : Quand une valeur change, elle est surlignée en couleur. Plus le changement est récent, plus la couleur est vive. C'est parfait pour détecter des pics d'utilisation ou des connexions qui apparaissent.

6. Masquer l'en-tête avec -t

# 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'

7. Cas d'usage pratiques

Surveiller un téléchargement

# 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 .'

Observer un répertoire

# 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)"'

Tester l'effet d'une commande cron

# 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'

Surveillance système combinée

# 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'

8. Mode "Gate" avec -g

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"'
⚠️ Attention : -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.

9. Combiner avec des tubes

#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"

10. Quitter watch

Pour quitter watch, utilise :

11. Scripts et automatisation

#!/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'

12. Tableau récapitulatif

CommandeDescription
watch df -hSurveillance espace disque (intervalle 2s)
watch -n 5 df -hIntervalle de 5 secondes
watch -d df -hAvec surbrillance des différences
watch -d=cumulative df -hSurlignage cumulatif
watch -t df -hSans en-tête
watch -g ls -l fichierQuitte 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

13. Exercice pratique

Exercice : Créer ton tableau de bord système

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 !