터미널에서 실시간으로 관찰하기 watch

터미널에서 작업을 하다보면 메모리 사용량이나 스토리지 사용량을 확인하기 위해 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과 같이 각 필요에 따라서 더 정밀하고 자세한 정보를 제공하는 도구가 많으니 자주 사용한다면 꼭 관련 모니터링 도구를 살펴보자.

김용균

안녕하세요, 김용균입니다. 문제를 해결하기 위해 작고 단단한 코드를 작성하는 일을 합니다. 웹의 자유로운 접근성을 좋아합니다. 프로그래밍 언어, 소프트웨어 아키텍처, 커뮤니티에 관심이 많습니다.

이 글 공유하기

이 글이 유익했다면 주변에도 알려주세요!

페이스북으로 공유하기트위터로 공유하기링크드인으로 공유하기Email 보내기

주제별 목록

같은 주제의 다른 글을 읽어보고 싶다면 아래 링크를 확인하세요.

April 20, 2016

터미널에서 gist에 코드 올리기 gist

작업을 하다 보면 작은 코드 스니핏을 공유해야 하는 경우가 있다. 간단하게 텍스트 파일을 작성해서 메일이나 메신저를 통해서 공유할 수도 있고 GitHub의 gist 서비스를 이용해서 공유할 수 있다. 이 gist에 코드를 올리는 작업을 브라우저 없이…

April 14, 2016

크로스플랫폼에서 ASP.NET Core 애플리케이션 개발하기 발표 자료

올해부터 호주 멜버른에서 IT 개발 직군에 종사하는 한국어 구사자를 위한 Weird Developer Melbourne 이 운영되고 있다. 2월 16일 밋업 에 발표했던 자료인데 정리해서 올린다고 하고 두 달이나 지나서야 올리게 되었다. 발표 영…