Comment exécuter périodiquement un programme à l’aide de la commande Watch sous Linux

Parfois, vous devez exécuter à plusieurs reprises une commande ou un programme pour surveiller divers aspects de votre système, tels que les processus en cours, l’utilisation de l’espace disque ou les connexions des utilisateurs. La commande Linux watch vous permet d’automatiser ces tâches sans avoir à les exécuter manuellement encore et encore.

À l’aide de cette commande, vous pouvez surveiller les activités du système en temps réel telles que les connexions des utilisateurs, l’état du réseau, l’utilisation de la mémoire et du processeur, l’espace disque, etc. Voyons comment utiliser la commande watch sous Linux.

Qu’est-ce que la commande Watch ?

La commande watch Linux exécute une commande ou un programme spécifié à plusieurs reprises, à intervalles réguliers, et affiche sa sortie dans le terminal. Cela vous permet d’observer les changements dans la sortie en temps réel. Il actualise la sortie à chaque intervalle, écrasant la sortie précédente de la commande. Par défaut, la commande se répète toutes les deux secondes et continue jusqu’à ce que vous l’arrêtiez manuellement à l’aide de Ctrl + C.

  Comment configurer le thème d'icônes Korla sur Linux

Regarder la syntaxe des commandes

La syntaxe de la commande watch est :

 watch options <command> 

Il existe diverses options de ligne de commande disponibles à utiliser avec la commande watch. Si vous exécutez la commande watch sans aucune option, elle exécutera la commande spécifiée toutes les deux secondes. Par exemple, ce qui suit vous montrera le résultat de la commande ls :

 watch ls -l ~/ 

La sortie vous montrera les modifications apportées à la liste des répertoires si un fichier est créé, supprimé ou change de taille, tout en actualisant la sortie toutes les deux secondes.

Exécuter une commande toutes les X secondes à l’aide de la montre

Vous pouvez modifier l’intervalle de mise à jour de la commande watch. Cela signifie que vous pouvez dire à la commande watch d’attendre x secondes avant de répéter la commande. Pour modifier l’intervalle de mise à jour, utilisez l’option -n suivie de l’intervalle de temps en secondes.

 watch -n  

Par exemple, pour exécuter une commande toutes les 5 secondes, exécutez :

 watch -n 5 <command> 

Mettre en évidence les modifications entre les mises à jour

La commande watch écrase sa sortie à chaque actualisation. À l’aide de l’option -d, vous pouvez également mettre en évidence les modifications entre la sortie précédente et la sortie mise à jour.

 watch -d 

Masquer l’en-tête dans la sortie de la commande watch

Par défaut, la commande watch affiche un en-tête en haut de chaque sortie contenant l’intervalle de mise à jour, le nom de la commande ainsi que la date et l’heure actuelles du système. Vous pouvez supprimer l’en-tête de la sortie à l’aide de l’option -t :

 watch -t <command> 

Jouer des bips en cas d’erreur

Lorsqu’un processus Linux termine son exécution, il renvoie un code de sortie. Par convention, la valeur est 0 en cas de réussite et non nulle pour représenter une erreur. L’option -b de la commande watch émet un bip si la commande renvoie une sortie différente de zéro.

  Comment configurer le chargeur de démarrage rEFInd sur les systèmes Linux

Supposons que vous souhaitiez surveiller sshd.service et être averti lorsque le service s’arrête ; vous utiliseriez :

 watch -b sudo systemctl status sshd.service 

Cette commande émettra un bip lorsque le service s’arrêtera. Le bip s’arrêtera lorsque le service reprendra. Pour tester cela, ouvrez une autre fenêtre de terminal et arrêtez le service. Cela émettra des bips constants jusqu’à ce que vous redémarriez le service. Cependant, pour utiliser cette fonctionnalité, vous devez avoir installé le package beep sur votre système.

Quittez la commande watch lors du changement de sortie

Vous pouvez également demander à la commande watch d’arrêter de s’exécuter et de quitter lorsque le résultat de la commande change. Vous pouvez le faire en utilisant l’option -g. Cette option est très utile dans les scénarios où vous attendez certains changements dans la sortie.

  Comment supprimer des volumes LVM Linux

Une fois la sortie modifiée, la commande watch s’arrêtera. Vous pouvez combiner cette utilisation avec la commande echo pour afficher un message à l’écran.

Par exemple, considérons un scénario dans lequel vous attendez qu’un fichier arrive dans votre répertoire. La commande suivante surveillera le répertoire du fichier spécifié. Dès son arrivée, la commande watch cessera de s’exécuter et le fichier de message arrivé s’affichera sur le terminal.

 watch -g "ls -l | grep filename" && echo "file arrived" 

Un autre exemple utile est une notification lorsqu’un utilisateur spécifique se connecte à votre système :

 watch -g "who | grep username" && echo "username logged in" 

Cette commande surveillera la sortie de la commande who qui répertorie les utilisateurs connectés. Une fois l’utilisateur connecté, la commande watch s’arrêtera et affichera un message sur le terminal.

De même, vous pouvez demander à la commande watch d’arrêter un service lorsque des modifications sont apportées à un fichier. Gardez à l’esprit que lorsque vous utilisez une chaîne de commandes redirigées, vous devrez mettre la commande entière entre guillemets.

Surveillez les activités sur votre système Linux

Si vous effectuez le même processus à plusieurs reprises, envisagez d’utiliser la commande watch pour l’automatiser. Cela vous évite de taper fréquemment les commandes pour voir ce qui a changé.

Vous pouvez également utiliser la commande watch avec d’autres commandes Linux pour surveiller les ressources et les activités du système et suivre les modifications apportées aux fichiers ou aux répertoires.