자바스크립트를 활성화 해주세요

p012 Powershell로 만들어쓰는 Watch 명령어, Lsltr명령어

 ·  ☕ 2 min read

    리눅스의 watch 명령어

    리눅스 명령어 중에 명령어 실행 결과 값을 계속 지켜보고 싶을 때에 사용하는 명령어 중에 중에 watch 가 있습니다.

    • 라우팅 테이블을 실시간으로 변경되는 것을 눈으로 직접 확인하기 위해.
    • provisioning되는 리소스의 State를 실시간으로 관찰하기 위해.
      • OpenStack이나 Kubernetes객체 상태를 살펴볼 때.

    대게는 리눅스 터미널 프로그램에 tmux를 실행해 놓고, 한 쪽의 윈도우에서는 watch 명령으로 provisioning되는 상태를 관찰하는 형태로 많이 사용됩니다, 사용법은 다음과 같습니다.

    watch -n [시간:초] <명령어>
    

    간단히 쉘 스크립트로도 반복 실행은 가능합니다. 예를 들면,

    while true; do netstat | grep hello; sleep 1 ; done ;
    

    Invoke-Repeatedly

    비슷한 방식으로 powershell을 사용해서 만들어 보았습니다. ScriptBlock type에 대해 공부해 보면 조금 재미있는 디자인이라고 느끼실 겁니다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    # $VerbosePreference="Continue"
    Write-Verbose "$($MyInvocation.MyCommand.Name) loaded"
    
    Function Invoke-Repeatedly {
        [CmdletBinding()]
        Param(
            [int] $Second = 5 * 60,
            [ScriptBlock] $ScriptBlock,
            $ArgumentList
        )
    
        While($True) {
            Get-Date
            & $ScriptBlock -ArgumentList $ArgumentList
            Start-Sleep -s $Second
        }
    }
    
    function lsltr { Get-ChildItem | Sort-Object LastAccessTime | Format-Table }
    Set-Alias -Name watch Invoke-Repeatedly
    

    lsltr

    lsltr은 리눅스의 ls -ltr명령어를 흉내낸 것입니다. 파일을 생성시간순으로 정렬해서 출력하는 명령어입니다. 한 번씩 사용할 때가 있어서 만둘어 두었는데, 으로 올립니다.

    사용예

    다음은 블로그의 글을 얼마나 쓰고 있는 지, 10초 간격으로 보여주는 간단한 사용예입니다.

    1
    
    watch -s 10 {cls; Show-HugoReport;}
    

    레퍼런스

    gnu 커맨드를 win32용으로 포팅해놓은 gow 라는 패키지도 있습니다.

    scoop install gow
    
    공유하기

    tkim
    글쓴이
    tkim
    Software Engineer