81 votes

Quel est l'analogue Windows de la commande watch de Linux ?

Je cherche un programme/script/fonction de ligne de commande Windows qui fonctionne comme la fonction de Linux watch programme.

watch appelle périodiquement un autre programme/quelque chose et affiche le résultat, ce qui est idéal pour rafraîchir un fichier de sortie ou similaire toutes les secondes :

watch cat my-output.txt

ou, plus puissamment :

watch grep "fail" my-output.txt

Je l'ai cherché dans la bibliothèque de Cygwin, mais il ne semble pas être présent.

60voto

harrymc Points 394411

Écrivez le vôtre. Disons que le fichier watch.bat contient :

@ECHO OFF
:loop
  cls
  %*
  timeout /t 5 > NUL
goto loop

et l'appeler via, par exemple :

watch echo test

fera écho à test toutes les 5 secondes.

41voto

user256034 Points 811

Powershell dispose de la fonction while commande. Vous pouvez l'utiliser comme sous Linux :

while (1) {your_command; sleep 5}

Version Linux :

while true; do your_command; sleep5; done

Autres :

while ($true) {netstat -an | findstr 23560; sleep 5; date}

19voto

David Spillett Points 23094

watch est disponible dans Cygwin, dans le répertoire procps paquet comme indiqué aquí (cette information peut être trouvée via la recherche de paquets sur le site web, aquí ). Je ne pense pas que ce paquetage soit installé par la configuration par défaut de cygwin, mais c'est celui que je sélectionne habituellement sur les nouvelles installations afin d'avoir la commande watch disponible.

L'emplacement des outils dans les paquets correspond généralement aux noms des paquets dans les distributions Linux (le paquet contenant watch est procps sur Debian et Ubuntu aussi) donc si la fonction de recherche de paquets de Cygwin ne vous réussit pas, les informations pour/depuis les distributions Linux peuvent offrir des indices.

18voto

Mike Brady Points 58

Une commande générique Windows oneliner pour accomplir ceci :

for /l %g in () do @( echo test & timeout /t 2 )

Remplacez "echo test" par la commande que vous souhaitez exécuter de manière répétée.

8voto

klaypigeon Points 81

C'est comme ça que je le ferais dans PowerShell :

while(1){ netstat -an|grep 1920;start-sleep -seconds 2;clear }

La condition while(1) est équivalent à while true en boucle indéfiniment.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X