web-dev-qa-db-fra.com

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

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

watch appelle périodiquement un autre programme/quel que soit et affiche le résultat, ce qui est très utile pour actualiser 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 cela ne semble pas être présent.

53
PeterJCLaw

watch est disponible dans Cygwin, dans le package procps comme indiqué ici (cette information peut être trouvée via la recherche de package sur le site Web, ici ). Je ne pense pas que ce paquet soit installé avec la configuration par défaut de cygwin, mais je le sélectionne généralement lors de nouvelles installations afin que la commande watch soit disponible.

L'emplacement des outils dans les paquetages correspond généralement aux noms de paquet dans les distributions Linux (le paquet contenant watch est également procps sur Debian et Ubuntu), donc si la fonction de recherche de paquet Cygwin échoue, les informations pour/à partir de distributions Linux peuvent offrir des indices.

13
David Spillett

Écrivez votre propre. Disons que le fichier watch.bat contient:

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

et appelez-le via, par exemple:

watch echo test

fera écho test toutes les 5 secondes.

44
harrymc

Powershell a la commande "tant que". Vous pouvez l’utiliser comme sous Linux:

tandis que (1) {votre_commande; dormir 5}

Version Linux:

bien que vrai faites votre_commande; sleep5; terminé

Autres:

while ($ true) {netstat -an | findstr 23560; dormir 5; rendez-vous amoureux}

25
Mikis

Une commande Windows générique 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 à plusieurs reprises.

10
w1mb0r

J'ai écrit ce petit module PowerShell pour faire ce que vous cherchiez. Il suffit de le mettre dans

C:\Users\[username]\Documents\WindowsPowerShell\Modules\Watch

et exécutez import-module watch dans PowerShell.


# ---- BEGIN SCRIPT
# Author:       John Rizzo
# Created:      06/12/2014
# Last Updated: 06/12/2014
# Website:      http://www.johnrizzo.net

function Watch {
    [CmdletBinding(SupportsShouldProcess=$True,ConfirmImpact='High')]
    param (
        [Parameter(Mandatory=$False,
                   ValueFromPipeline=$True,
                   ValueFromPipelineByPropertyName=$True)]
        [int]$interval = 10,

        [Parameter(Mandatory=$True,
                   ValueFromPipeline=$True,
                   ValueFromPipelineByPropertyName=$True)]
        [string]$command
    )
    process {
        $cmd = [scriptblock]::Create($command);
        While($True) {
            cls;
            Write-Host "Command: " $command;
            $cmd.Invoke();
            sleep $interval;
        }
    }
}

Export-ModuleMember -function Watch

# --- END SCRIPT
6
johnrizzo1

C'est une doublure PowerShell:

while ($true) { <your command here> | Out-Host; Sleep 5; Clear }
6
ErikW

Voici comment je le ferais dans PowerShell:

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

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

6
klaypigeon

Vous pouvez également rattraper un retard en utilisant la commande PING, par exemple:

@echo off
:loop
  cls
  dir c:\temp
  REM 5000mS (5 sec) delay...
  ping 1.1.1.1 -n 1 -w 5000 >NUL
goto loop
3
Linker3000

J'ai eu le même problème lorsque j'ai eu besoin de vérifier la taille d'un fichier en cours de traitement par un autre processus. J'ai fini par cloner la fonctionnalité de watch sur Windows. Le fichier compilé ainsi que la source sont disponibles sur le site.

surveillez Windows

2
garrettg84

ce que @harrymc a dit sauf avec sleep watch.bat

@ECHO OFF
:loop
  %*
  sleep 5
goto loop

./watch.bat npm lancer le test

npm run test toutes les 5 secondes

1
user2167582

J'ai créé une commande de surveillance pour Windows appelée llwatch.

Le code est à la fois sur mon site web landenlabs.com

et aussi sur GitHub

Vous devrez peut-être utiliser x64 pour regarder des programmes x64 et x32 pour les autres. Je ne sais pas à quel point les fenêtres sont difficiles.

1
LanDenLabs
0
evandrix