web-dev-qa-db-ja.com

LinuxのwatchコマンドのWindowsの類似物は何ですか?

Linuxのwatchプログラムのように機能するWindowsプログラム/スクリプト/コマンドライン関数を探しています。

watch は、定期的に別のプログラムを呼び出して結果を表示します。これは、出力ファイルなどを毎秒更新するのに最適です。

watch cat my-output.txt

または、より強力に:

watch grep "fail" my-output.txt

Cygwinのライブラリで探しましたが、存在しないようです。

63
PeterJCLaw

watchはCygwinのprocpsパッケージにリストされています here (この情報は、Webサイトのパッケージ検索で確認できます here )。このパッケージはデフォルトのcygwinセットアップではインストールされないと思いますが、watchコマンドを使用できるようにするために、新しいインストールで通常選択するパッケージです。

パッケージ内のツールの場所は通常、Linuxディストリビューションのパッケージ名と一致します(watchを含むパッケージは、DebianおよびUbuntuでもprocpsです)。Cygwinパッケージ検索機能が失敗した場合、Linuxディストリビューションの情報が手掛かりとなる場合があります。

14
David Spillett

自分で書いてください。ファイルwatch.batに次が含まれているとしましょう:

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

たとえば、次のように呼び出します。

watch echo test

5秒ごとにtestをエコーし​​ます。

50
harrymc

Powershellには「while」コマンドがあります。Linuxのように使用できます:

while(1){your_command;寝る5}

Linuxバージョン:

真である間; your_commandを実行します。 sleep5;終わった

その他:

while($ true){netstat -an | findstr 23560; 5睡眠;日付}

33
Mikis

これを達成するための一般的なWindowsコマンドoneliner:

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

「echo test」を繰り返し実行したいコマンドに置き換えます。

16
w1mb0r

私はあなたが探していたものを実行するためにこの小さなPowerShellモジュールを書きました。入れるだけ

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

powerShellでimport-module watchを実行します。


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

これはPowerShellの1つのライナーです。

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

これは私がPowerShellでそれを行う方法です:

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

条件while(1)は_while true_と同等であり、無期限にループします。

6
klaypigeon

たとえば、PINGコマンドを使用して遅延を補うこともできます。

@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

別のプロセスでアクティブに処理されているファイルのファイルサイズを確認する必要があるときにも、同じ問題が発生しました。結局、Windowsの時計の機能のクローンを作成しました。コンパイル済みのexeとソースはサイトで入手できます。

Windows用に監視

2
garrettg84

@harrymcがsleep watch.batを除いて言ったこと

@ECHO OFF
:loop
  %*
  sleep 5
goto loop

./watch.bat npm run test

npm run test 5秒ごと

1
user2167582

Llwatchというウィンドウ用の監視コマンドを作成しました。

コードはどちらも私のウェブサイトにあります landenlabs.com

そしてまた GitHub

X64プログラムを監視するにはx64を使用し、他のプログラムを監視するにはx32を使用する必要がある場合があります。うるさいウィンドウがどれほどうるさいかわかりません。

1
LanDenLabs
0
evandrix