터미널에서 작업을 하다보면 메모리 사용량이나 스토리지 사용량을 확인하기 위해 free -m
또는 df -h
를 사용해본 경험이 있을 것이다. 명령을 입력하고 엔터를 누르는 순간에 명령을 처리하고 그 결과를 반환하기 때문에 지속적으로 변하는 결과를 살펴보기엔 불편하게 느껴질지도 모른다. 그런 상황에서 사용할 수 있는 명령이 바로 watch
다. 이 명령으로 간격을 두고 반복적으로 결과를 확인하고 싶은 명령을 손쉽게 사용할 수 있다.
대부분의 리눅스 환경에는 이미 설치되어 있을 것이다. OS X의 경우에는 homebrew로 설치할 수 있다.
$ brew install watch
간단하게 사용해보자. date
를 입력하면 현재 시각을 확인할 수 있다. watch date
를 입력하면 매 2초 간격으로 date
의 결과를 화면에 표시한다.
$ date
Thu 14 Apr 2016 22:02:59 AEST
$ watch date
Every 2.0s: date Thu Apr 14 22:03:26 2016
Thu 14 Apr 2016 22:03:26 AEST
화면에서 빠져나오기 위해서 Ctrl + C를 입력한다. 기본적으로 2초의 주기로 설정되어 있는데 2초가 조금 길다면 -n
, --interval
을 이용해서 그 주기를 조정할 수 있다. -d
, --differences
를 추가하면 어느 문자가 변하고 있는지 강조된다. 스토리지의 용량을 확인하는 df
명령과 함께 사용하면 다음과 같다.
$ watch -d -n 0.5 df -h
Every 0.5s: df -h Thu Apr 14 22:03:26 2016
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 931Gi 643Gi 287Gi 70% 168658707 75329829 69% /
devfs 186Ki 186Ki 0Bi 100% 644 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk2s1 1.8Ti 900Gi 963Gi 49% 2253 1009481363 0% /Volumes/My Passport
만약 두 가지 이상의 명령을 동시에 모니터링하고 싶다면 간단하게 ;
로 구분해서 호출할 수 있다. 다음은 현재 디렉토리를 확인하는 ls
와 앞에서 본 df
를 같이 사용하는 예시다.
$ watch -n 0.5 "ls -al ; df -h"
Every 0.5s: ls -al ; df -h Thu Apr 14 22:03:26 2016
total 152
drwxr-xr-x@ 10 edward staff 340 14 Apr 22:15 .
drwxr-xr-x@ 24 edward staff 816 30 Mar 18:32 ..
-rw-r--r--@ 1 edward staff 2639 29 Mar 02:13 cowsay.md
-rw-r--r--@ 1 edward staff 2163 8 Apr 23:22 figlet.md
-rw-r--r--@ 1 edward staff 2541 14 Apr 21:43 gist.md
-rw-r--r--@ 1 edward staff 179 8 Apr 23:44 slurm.md
-rw-r--r--@ 1 edward staff 48201 8 Apr 23:26 slurm.png
-rw-r--r--@ 1 edward staff 1390 8 Apr 08:31 todo.md
-rw-r--r--@ 1 edward staff 2559 14 Apr 22:15 watch.md
-rw-r--r--@ 1 edward staff 2260 3 Apr 00:02 zsh-bash.md
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 931Gi 643Gi 287Gi 70% 168659745 75328791 69% /
devfs 186Ki 186Ki 0Bi 100% 644 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk2s1 1.8Ti 900Gi 963Gi 49% 2253 1009481363 0% /Volumes/My Passport
명령을 쌍따옴표로 감싸서 실행했다. ;
는 명령행에서 특별한 의미를 갖는 문자이기 때문에 watch
내에서만 실행하도록 전달하기 위해 쌍따옴표를 사용했다. 따옴표 없이 사용하려 한다면 \;
와 같이 역슬래시로 탈출문자 처리를 하면 쌍따옴표 없이 동일한 결과를 모니터링 할 수 있다.
이처럼 watch
는 아주 간단한 용도로 사용할 수 있는 모니터링 도구다. 즉 메모리나 프로세스를 모니터링 할 때는 htop
과 같이 각 필요에 따라서 더 정밀하고 자세한 정보를 제공하는 도구가 많으니 자주 사용한다면 꼭 관련 모니터링 도구를 살펴보자.