Linux watch komutunun Windows analoğu nedir?


58

Linux watchprogramı gibi çalışan bir Windows programı / script / komut satırı işlevi arıyorum .

watch düzenli aralıklarla başka bir program çağırır / ne olursa olsun ve sonucu gösterir; bu, bir çıktı dosyasını yenilemek için harikadır veya her saniye benzerdir:

watch cat my-output.txt

veya daha güçlü bir şekilde:

watch grep "fail" my-output.txt

Bunu cygwin'in kütüphanesinde aradım, ancak mevcut görünmüyor.

Yanıtlar:


14

watchCygwin'de, buradaprocps listelenen pakette bulunabilir (bu bilgiyi web sitesinde paket arama yoluyla bulabilirsiniz ). Bu paketin varsayılan cygwin kurulumu tarafından yüklendiğini sanmıyorum, ancak izleme komutunun kullanılabilmesi için genellikle yeni kurulumlarda seçtiğim bir program.

Paketlerdeki araçların konumu genellikle Linux dağıtımlarındaki paket adlarıyla eşleşir (içeren paket watchDebian ve Ubuntu'da da bulunur), bu nedenle Cygwin paket arama işlevi başarısız olursa, Linux dağıtımları için / hakkında bilgi ipuçları verebilir.


47

Kendin yaz. Diyelim ki dosya watch.batiçeriyor:

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

ve örneğin,

watch echo test

testher 5 saniyede bir yankılanacak .


@Keilaron: Düzenlemenin kötü olduğunu ve düzeltmem gerektiğine dikkat et. Lütfen daha dikkatli ol.
Scott,

Basit ama harika. Sadece tek bir komut için cygwin'i kurmaktan kaçınır. Vielen Dank!
Stef,

28

Powershell "while" komutuna sahiptir. Linux'taki gibi kullanabilirsiniz:

(1) {your_command; uyku 5

Linux versiyonu:

doğru olsa da; Komutunuzu yapın; sleep5; tamam

Diğerleri:

while ($ true) {netstat -an | findstr 23560; uyku 5; tarih, randevu, biriyle çıkmak}


4
Sadece kullanabilirsiniz while (1), çünkü 1gerçek.
TheQuickBrownFox

1
Ayrıca, son ifadesi olarak "clear" ı kullanabileceğini de öğrendim, bu yüzden daha çok seyretmek gibi davranıyor.
itmuckel

13

Bunu gerçekleştirmek için genel bir Windows komutu oneliner:

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

"Echo test" i tekrar tekrar çalıştırmak istediğiniz komutla değiştirin.


güzel bir, basit hile yapan bir liner
user230910

6

Bu küçük PowerShell modülünü aradığınızı yapmak için yazdım. Sadece içine koy

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

ve import-module watchPowerShell'de çalıştırın .


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

1
Oldukça iyi görünüyor ama Fiil-İsim biçiminde (örn olmak işlevini teşvik edecek Watch-Commandbir takma ad ile) Watch( Set-Alias -Name Watch -item Watch-Command).
duct_tape_coder

6

PowerShell'de şu şekilde yapardım:

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

Koşul while(1), while truesüresiz olarak döngü yapmakla eşdeğerdir .


6

Bir PowerShell bir astar:

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

Clearİlk ben koyardım .
sastanin

komutunuzun ne kadar süreceği ve görüntülenmesi için
çıkma süresine

3

Ayrıca PING komutunu kullanarak bir gecikme de yapabilirsiniz, örneğin:

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

2

Aktif olarak çalışmakta olan bir dosyanın dosya boyutunu kontrol etmek gerektiğinde de aynı sorunu yaşadım. Windows'ta saatin işlevselliğini klonladım. Derlenmiş exe gibi kaynak sitede mevcuttur.

Windows için izle



1

@harrymc ne dedi ki uyku watch.bat hariç

@ECHO OFF
:loop
  %*
  sleep 5
goto loop

./watch.bat npm çalışma testi

npm run test her 5 saniyede



-1

Acelem vardı .... Bir öneri kullandım ve benim için çalışması için biraz değişti:

% / g için () do @ (eko testi ve zaman aşımı / t 2)

Şunu değiştirdim:

% / g için% () do @ (test.bat & timeout / t 2)

Ve test.bat dosyasını komut satırıyla oluşturdum. Benim durumumda, öyleydi:

net grup / etki alanı

Echo komutunun ekrana yeni basıldığını ancak komutu çalıştırmadığını öğrendim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.