Linux watch 명령의 Windows 아날로그 란 무엇입니까?


58

Linux watch프로그램 처럼 작동하는 Windows 프로그램 / 스크립트 / 명령 줄 기능을 찾고 있습니다.

watch 주기적으로 다른 프로그램 / 무엇이든 호출하고 결과를 보여줍니다. 매초마다 출력 파일을 새로 고치는 데 좋습니다.

watch cat my-output.txt

또는 더 강력하게 :

watch grep "fail" my-output.txt

cygwin의 도서관에서 찾았지만 존재하지 않는 것 같습니다.

답변:


14

watchCygwin에서 여기에procps 나열된 패키지로 제공됩니다 (이 정보는 웹 사이트의 패키지 검색을 통해 여기를 참조 하십시오 ). 이 패키지는 기본 cygwin 설정에 의해 설치되지 않았다고 생각하지만 watch 명령을 사용하기 위해 일반적으로 새 설치에서 선택하는 패키지입니다.

패키지의 도구 위치는 일반적으로 Linux 배포판의 패키지 이름 ( watchDebian 및 Ubuntu의 procps이기도 함)과 일치 하므로 Cygwin 패키지 검색 기능이 실패하면 Linux 배포판에 대한 정보가 실마리를 제공 할 수 있습니다.


47

직접 작성하십시오. 파일 watch.bat에 다음이 포함되어 있다고 가정 해 봅시다 .

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

예를 들어 다음과 같이 호출하십시오.

watch echo test

메아리 test5 초마다.


@ Keilaron : 편집이 잘못되어 수정해야한다는 점에 유의하십시오. 더 조심하십시오.
Scott

단순하지만 훌륭합니다. 해당 단일 명령에 대해서만 cygwin을 설치하지 마십시오. 비 엘렌 댄크!
Stef

28

Powershell에는 "while"명령이 있습니다. Linux 에서처럼 사용할 수 있습니다.

while (1) {your_command; 수면 5}

리눅스 버전 :

사실이지만; your_command를하십시오; 수면 5; 끝난

기타 :

while ($ true) {netstat -an | findstr 23560; 수면 5; 데이트}


4
진실 while (1)하기 1때문에을 사용할 수 있습니다 .
TheQuickBrownFox

1
또한 마지막 문장으로 "clear"를 사용할 수 있으므로 시계처럼 작동합니다.
itmuckel

13

이것을 달성하기위한 일반적인 Windows 명령 oneliner :

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

"echo test"를 반복적으로 실행하려는 명령으로 바꾸십시오.


트릭 않습니다 좋은 하나, 간단한 라이너
user230910

6

나는 당신이 찾고있는 것을하기 위해이 작은 PowerShell 모듈을 썼습니다. 그냥 넣어

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

import-module watchPowerShell에서 실행하십시오 .


# ---- 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
꽤 좋아 보이지만 ( ) Watch-Command의 별칭으로 함수가 동사-형식 (예 :)이되도록 권장합니다 . WatchSet-Alias -Name Watch -item Watch-Command
duct_tape_coder

6

이것이 내가 PowerShell에서하는 방법입니다.

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

조건 while(1)while true무한 반복됩니다.


6

PowerShell one liner입니다.

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

Clear먼저 하겠습니다 .
sastanin

명령을 실행하고 표시하는 데 걸리는 시간에 따라 다릅니다 .... 순서를 변경할 수 있지만 이것이 일반적인 아이디어입니다.
ErikW

3

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

2

다른 프로세스에서 적극적으로 작업중 인 파일의 파일 크기를 확인해야 할 때도 같은 문제가있었습니다. 나는 Windows에서 watch의 기능을 복제했습니다. 컴파일 된 exe와 소스는 사이트에서 사용할 수 있습니다.

Windows 시청


1

llwatch라는 창에 대한 watch 명령을 작성했습니다.

코드는 모두 내 웹 사이트 landenlabs.com에 있습니다.

그리고 GitHub 에서도

x64를 사용하여 x64 프로그램을 보거나 x32를 사용하여 다른 프로그램을보아야 할 수도 있습니다. 얼마나 까다로운 창이 있는지 잘 모르겠습니다.


왜 이것이 다운 보트인지 확실하지 않습니다 ... 슈퍼 유저에 오신 것을 환영합니다 !
jpaugh

1

sleep watch.bat를 제외하고 @harrymc가 말한 것

@ECHO OFF
:loop
  %*
  sleep 5
goto loop

./watch.bat npm 실행 테스트

npm run test 5 초마다



-1

나는 서둘렀다 .... 나는 하나의 제안을 사용하고 나를 위해 일하기 위해 조금 변경했다.

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

나는 그것을 다음과 같이 바꿨다.

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

그리고 명령 줄을 사용하여 test.bat 파일을 만들었습니다. 제 경우에는 다음과 같습니다.

넷 그룹 / 도메인

echo 명령이 방금 화면에 인쇄되었지만 명령을 실행하지 않았다는 것을 알았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.