Répétition de commandes Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

La commande watch est un outil puissant dans les systèmes Linux qui permet aux utilisateurs d'exécuter périodiquement une commande et d'afficher sa sortie sur le terminal. Cet outil est particulièrement utile pour surveiller les ressources système, suivre les modifications de fichiers ou observer tout processus qui produit une sortie à intervalles réguliers.

Dans ce labo (LabEx), vous apprendrez à utiliser la commande watch pour automatiser les tâches répétitives et surveiller les modifications du système. Vous comprendrez sa syntaxe, ses options et ses applications pratiques dans des scénarios du monde réel. À la fin de ce labo (LabEx), vous serez en mesure de configurer des processus de surveillance automatisée pour observer efficacement les modifications de votre système.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/watch("Command Repeating") linux/SystemInformationandMonitoringGroup -.-> linux/free("Memory Reporting") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-271435{{"Répétition de commandes Linux"}} linux/cat -.-> lab-271435{{"Répétition de commandes Linux"}} linux/chmod -.-> lab-271435{{"Répétition de commandes Linux"}} linux/cd -.-> lab-271435{{"Répétition de commandes Linux"}} linux/grep -.-> lab-271435{{"Répétition de commandes Linux"}} linux/watch -.-> lab-271435{{"Répétition de commandes Linux"}} linux/free -.-> lab-271435{{"Répétition de commandes Linux"}} linux/nano -.-> lab-271435{{"Répétition de commandes Linux"}} end

Comprendre les bases de la commande Watch

La commande watch vous permet d'exécuter une autre commande de manière répétée à des intervalles spécifiés. Cela est utile lorsque vous avez besoin de surveiller une situation changeante ou d'observer la sortie d'une commande au fil du temps.

Commençons par explorer la syntaxe de base de la commande watch :

watch [options] command

Les options courantes incluent :

  • -n <secondes> : Spécifie l'intervalle de mise à jour en secondes (la valeur par défaut est de 2 secondes)
  • -d : Met en évidence les modifications entre les mises à jour
  • -t : Désactive l'en-tête affichant la commande et l'heure actuelle

Créons un exemple simple pour démontrer le fonctionnement de watch. Tout d'abord, accédez à votre répertoire de travail :

cd ~/project

Maintenant, créons un script simple qui génère un nombre aléatoire à chaque exécution. Cela nous aidera à visualiser comment watch répète les commandes. Créez un fichier appelé generate_number.sh avec le contenu suivant :

nano ~/project/generate_number.sh

Dans l'éditeur nano, tapez le contenu suivant :

#!/bin/bash
echo "Random number: $((RANDOM % 100 + 1))" > ~/project/number.txt
cat ~/project/number.txt

Appuyez sur Ctrl+O puis sur Entrée pour enregistrer le fichier, puis Ctrl+X pour quitter nano.

Rendez maintenant le script exécutable :

chmod +x ~/project/generate_number.sh

Exécutons le script une fois pour voir ce qu'il fait :

~/project/generate_number.sh

La sortie devrait afficher un nombre aléatoire compris entre 1 et 100.

Maintenant, utilisons la commande watch pour exécuter ce script toutes les 3 secondes :

watch -n 3 ~/project/generate_number.sh

Vous verrez la sortie de la commande se rafraîchir toutes les 3 secondes, affichant un nouveau nombre aléatoire à chaque fois. L'en-tête en haut affiche la commande en cours d'exécution et l'heure actuelle.

Pour quitter la commande watch, appuyez sur Ctrl+C.

Essayons un autre exemple avec l'option -d pour mettre en évidence les modifications :

watch -n 3 -d ~/project/generate_number.sh

Remarquez comment les modifications dans la sortie sont mises en évidence entre les mises à jour. Cela est particulièrement utile lorsque vous surveillez de grandes sorties et que vous avez besoin d'identifier rapidement ce qui a changé.

Surveiller les ressources système avec Watch

L'une des utilisations les plus courantes de la commande watch est la surveillance des ressources système. Dans cette étape, vous apprendrez à utiliser watch pour surveiller certaines informations de base sur le système.

Commençons par surveiller l'utilisation de la mémoire de votre système en utilisant la commande free :

watch -n 2 free -m

La commande ci-dessus affichera l'utilisation de la mémoire en mégaoctets (-m) et rafraîchira la sortie toutes les 2 secondes. Cela est utile pour surveiller la consommation de mémoire au fil du temps.

Appuyez sur Ctrl+C pour quitter la commande watch.

Maintenant, surveillons l'utilisation du disque :

watch -n 5 df -h

Cette commande affiche l'utilisation du disque dans un format lisible par l'homme (-h) et se met à jour toutes les 5 secondes. Vous pouvez voir l'espace disponible et utilisé sur les différentes partitions de votre système.

Appuyez sur Ctrl+C pour quitter la commande watch.

Explorons une autre application utile en surveillant les processus en cours d'exécution sur votre système :

watch -n 3 "ps aux | head -10"

Cette commande affiche les 10 premiers processus triés par utilisation du CPU et se met à jour toutes les 3 secondes. Notez que nous avons mis la commande complexe entre guillemets pour qu'elle fonctionne correctement avec watch.

Appuyez sur Ctrl+C pour quitter la commande watch.

Créons un répertoire spécifique pour surveiller les modifications de fichiers :

mkdir -p ~/project/monitor_dir
touch ~/project/monitor_dir/file1.txt

Maintenant, utilisons watch pour surveiller le répertoire pour toute modification :

watch -n 2 "ls -l ~/project/monitor_dir"

Laissez cette commande s'exécuter dans votre terminal. Maintenant, ouvrez un nouveau terminal et créez un nouveau fichier dans le répertoire surveillé :

touch ~/project/monitor_dir/file2.txt

Observez comment la commande watch dans le premier terminal se met à jour automatiquement pour afficher le nouveau fichier. Cela démontre comment watch peut être utilisé pour surveiller en temps réel les modifications d'un répertoire.

Appuyez sur Ctrl+C dans le premier terminal pour quitter la commande watch.

Fonctionnalités avancées de la commande Watch

Dans cette étape, vous allez découvrir certaines fonctionnalités avancées de la commande watch qui peuvent rendre vos tâches de surveillance plus efficaces.

Commençons par explorer l'option -t, qui désactive l'en-tête affichant la commande et l'heure actuelle :

watch -n 3 -t date

Remarquez que l'en-tête est maintenant masqué, offrant un affichage plus propre axé uniquement sur la sortie de la commande. Cela est utile lorsque vous souhaitez maximiser l'espace d'écran pour la sortie.

Appuyez sur Ctrl+C pour quitter.

Ensuite, examinons comment utiliser watch avec l'option -g ou --chgexit. Cette option fait sortir watch lorsque la sortie de la commande change :

touch ~/project/test_change.txt
watch -g -n 1 "ls -l ~/project/test_change.txt"

Tandis que cette commande est en cours d'exécution, ouvrez un nouveau terminal et modifiez le fichier :

echo "hello" > ~/project/test_change.txt

La commande watch dans le premier terminal devrait sortir automatiquement lorsqu'elle détecte le changement dans le fichier.

Créons un exemple plus pratique. Nous allons créer un script qui simule un fichier de journal avec des erreurs occasionnelles :

nano ~/project/simulate_logs.sh

Dans l'éditeur nano, tapez le contenu suivant :

#!/bin/bash
LOG_FILE=~/project/application.log

## Initialize log file
echo "Starting log simulation" > $LOG_FILE

## Generate simulated log entries
for i in {1..10}; do
  echo "[$(date)] - INFO: Normal operation $i" >> $LOG_FILE
  sleep 1

  ## Occasionally generate an error
  if ((i % 3 == 0)); then
    echo "[$(date)] - ERROR: Something went wrong!" >> $LOG_FILE
  fi
done

echo "Log simulation complete" >> $LOG_FILE

Enregistrez et quittez nano (Ctrl+O, Entrée, Ctrl+X), puis rendez le script exécutable :

chmod +x ~/project/simulate_logs.sh

Maintenant, utilisons watch avec grep pour surveiller les messages d'erreur dans le fichier de journal :

watch -n 1 "grep ERROR ~/project/application.log || echo 'No errors found'"

Dans un autre terminal, exécutez le script de simulation de journal :

~/project/simulate_logs.sh

Observez comment le premier terminal affiche les messages d'erreur lorsqu'ils apparaissent dans le fichier de journal. Ceci est un exemple pratique d'utilisation de watch pour la surveillance des journaux en temps réel.

Appuyez sur Ctrl+C pour quitter la commande watch.

Enfin, voyons comment exécuter watch en arrière-plan et rediriger sa sortie vers un fichier :

watch -n 5 date > ~/project/date_output.txt 2>&1 &

Cette commande exécute la commande watch en arrière-plan, mettant à jour la date toutes les 5 secondes et enregistrant la sortie dans un fichier. Vous pouvez vérifier le contenu du fichier :

cat ~/project/date_output.txt

Pour arrêter le processus watch en arrière-plan, trouvez son PID et tuez-le :

ps aux | grep "watch -n 5 date"
kill <PID>  ## Remplacez <PID> par le numéro d'identifiant de processus réel

Ces exemples démontrent la polyvalence de la commande watch pour diverses tâches de surveillance.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande watch sous Linux pour exécuter des commandes de manière répétée à des intervalles spécifiés. Cette puissante utilitaire peut être utilisée pour diverses tâches de surveillance, ce qui en fait un outil essentiel pour les administrateurs système et les utilisateurs Linux.

Concepts clés abordés dans ce laboratoire :

  1. Utilisation de base de la commande watch avec diverses options telles que -n pour spécifier l'intervalle et -d pour mettre en évidence les changements.
  2. Surveillance des ressources système telles que l'utilisation de la mémoire, l'espace disque et les processus en cours d'exécution en utilisant watch combiné avec des commandes telles que free, df et ps.
  3. Utilisation de watch pour surveiller en temps réel les modifications de fichiers et de répertoires.
  4. Fonctionnalités avancées de watch, notamment l'exécution sans en-tête (-t), la sortie en cas de détection de changement (-g) et la combinaison avec d'autres commandes pour des besoins de surveillance spécifiques.
  5. Exécution de watch en arrière-plan et redirection de sa sortie vers des fichiers.

La commande watch est un outil polyvalent qui peut vous faire gagner du temps et des efforts lorsque vous avez besoin de surveiller des situations changeantes ou de rafraîchir automatiquement les sorties de commandes. Sa capacité à fonctionner avec n'importe quelle commande produisant une sortie en terminal la rend adaptable à une grande variété de scénarios, de l'administration système au développement d'applications et au débogage.