Linuxのwatch
プログラムのように機能するWindowsプログラム/スクリプト/コマンドライン関数を探しています。
watch
は、定期的に別のプログラムを呼び出して結果を表示します。これは、出力ファイルなどを毎秒更新するのに最適です。
watch cat my-output.txt
または、より強力に:
watch grep "fail" my-output.txt
Cygwinのライブラリで探しましたが、存在しないようです。
watch
はCygwinのprocps
パッケージにリストされています here (この情報は、Webサイトのパッケージ検索で確認できます here )。このパッケージはデフォルトのcygwinセットアップではインストールされないと思いますが、watchコマンドを使用できるようにするために、新しいインストールで通常選択するパッケージです。
パッケージ内のツールの場所は通常、Linuxディストリビューションのパッケージ名と一致します(watch
を含むパッケージは、DebianおよびUbuntuでもprocpsです)。Cygwinパッケージ検索機能が失敗した場合、Linuxディストリビューションの情報が手掛かりとなる場合があります。
自分で書いてください。ファイルwatch.bat
に次が含まれているとしましょう:
@ECHO OFF
:loop
cls
%*
timeout /t 5 > NUL
goto loop
たとえば、次のように呼び出します。
watch echo test
5秒ごとにtest
をエコーします。
Powershellには「while」コマンドがあります。Linuxのように使用できます:
while(1){your_command;寝る5}
Linuxバージョン:
真である間; your_commandを実行します。 sleep5;終わった
その他:
while($ true){netstat -an | findstr 23560; 5睡眠;日付}
これを達成するための一般的なWindowsコマンドoneliner:
for /l %g in () do @( echo test & timeout /t 2 )
「echo test」を繰り返し実行したいコマンドに置き換えます。
私はあなたが探していたものを実行するためにこの小さな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
これはPowerShellの1つのライナーです。
while ($true) { <your command here> | Out-Host; Sleep 5; Clear }
これは私がPowerShellでそれを行う方法です:
_while(1){ netstat -an|grep 1920;start-sleep -seconds 2;clear }
_
条件while(1)
は_while true
_と同等であり、無期限にループします。
たとえば、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
別のプロセスでアクティブに処理されているファイルのファイルサイズを確認する必要があるときにも、同じ問題が発生しました。結局、Windowsの時計の機能のクローンを作成しました。コンパイル済みのexeとソースはサイトで入手できます。
@harrymcがsleep watch.batを除いて言ったこと
@ECHO OFF
:loop
%*
sleep 5
goto loop
./watch.bat npm run test
npm run test
5秒ごと
Llwatchというウィンドウ用の監視コマンドを作成しました。
コードはどちらも私のウェブサイトにあります landenlabs.com
そしてまた GitHub
X64プログラムを監視するにはx64を使用し、他のプログラムを監視するにはx32を使用する必要がある場合があります。うるさいウィンドウがどれほどうるさいかわかりません。