본문 바로가기
IT/윈도우

Windows에서 리눅스 처럼 watch 기능 사용하기

by ITeaStory 2021. 5. 12.

watch는 리눅스에서 주기적으로 출력을 보여주는 명령어입니다.
특정 명령어를 주기적으로 실행해야 할 때 유용한데 이 기능이 윈도우의 cmd나 PowerShell에서는 지원하지 않습니다.

하지만 지금 알려드리는 방법으로 윈도우의 cmd와 PowerShell에서 리눅스의 watch와 유사한 기능을 만들 수 있습니다.

1. Windows cmd에서 nvidia-smi 1초마다 실행하기

nvidia-smi는 현재 그래픽카드의 사용률을 확인할 수 있는 프로그램입니다.

for /l %g in () do @(nvidia-smi & timeout /t 1)

여기서 nvidia-smi 부분을 바꾸면 다른 프로그램을 실행할 수도 있습니다.
그리고 timeout /t 1 부분에서 숫자 부분만 바꾸면 갱신 간격도 변경할 수 있습니다.
그리고 여기서 보시는 것처럼 &로 여러 프로그램을 동시에 실행할 수도 있습니다.

위 코드로는 nvidia-smi의 결과가 계속 누적해서 보이게 됩니다.
그래서 cls 명령어를 조합해서 watch와 유사하게 동작하도록 만들 수 있습니다.
아래처럼 말이죠.

for /l %g in () do @(cls & nvidia-smi & timeout /t 1)

Windows cmd에서 리눅스 watch처럼 사용하기

 

2. Windows PowerShell에서 nvidia-smi 1초마다 실행하기

PowerShell에서는 앞서 이야기한 명령줄이 실행되지 않습니다.
여기서는 아래처럼 사용하시면 됩니다.

while (1) {cls; nvidia-smi; sleep 1}

Windows PowerShell에서 리눅스 watch처럼 사용하기

차이가 보이시나요?

while대신 for를 써도 무방합니다.
sleep대신 앞에서 썼던 timeout /t <n초>를 쓰셔도 됩니다.

 

자꾸 깜빡이는게 거슬리긴 하지만 갱신 주기를 늘리면 크게 거슬리지는 않으실 거예요.

딥러닝 학습할 때 주로 보게 되는데 윈도우 환경에서 할 때는 watch가 생각날 때마다 한 번씩 입력해서 봤는데 이걸 알게 된 뒤로는 많이 편해졌습니다.