반응형

 

[참고] [CentOS 7] watch - 주기적으로 명령어 실행

Linux, watch - 주기적으로 명령어 실행

정리. 수알치 오상문

 

주기적으로 어떠한 명령어를 실행해주는 명령어로 watch 가 있습니다. 

(리부팅 후에도 이 작업을 계속하려면 다른 설정이 필요합니다.)

 

watch 명령은 원하는 명령어 결과를 지정된 초 단위 주기로 재실행해 보여줍니다.

시스템 자원 모니터링, 명령어 반복 처리 결과 확인 등에 유용합니다.

 

 

다음은 watch 명령 도움말을 살펴본 화면입니다. (man watch 명령으로도 확인)

 

[root@localhost ~]# watch --help

Usage: watch [-dhntv] [--differences[=cumulative]] [--help] [--interval=<n>] [--no-title] [--version] <command>

 

  -d, --differences[=cumulative]        highlight changes between updates

                                  (cumulative means highlighting is cumulative)

  -h, --help                            print a summary of the options

  -n, --interval=<seconds>              seconds to wait between updates

  -v, --version                         print the version number

  -t, --no-title                        turns off showing the header


 

ㅁ 기본 사용법

 

[root@localhost]# watch [-d] [-n seconds] 'command'

 

종료: Ctrl + c

 

-d 옵션:  이전 결과와 다른 부분을 표시해줌

-n 옵션: 다시 실행할 초단위 간격 (기본 2초)

 

ㅁ 예제

 

ㅇ 시스템 uptime 값을 반복 출력(기본 2초 간격)

 

  [root@localhost ~]# watch uptime

  Every 2.0s: uptime                                                                                      Thu Mar 29 01:49:12 2018

 

   01:49:12 up 83 days, 18:44,  1 user,  load average: 0.00, 0.00, 0.00

 

ㅇ 참고로 명령에 빈칸이 들어갈 때는 작은 따옴표(')로 묶어준다.

   반복을 5초 간격으로 하기 위해 -n 5 지정.

 

  [root@localhost ~]# watch -d -n 5 'cat /proc/uptime'

  Every 5.0s: cat /proc/uptime                                                                           Thu Mar 29 01:51:19 2018

  7238809.82 14469889.75

 

ㅇ 10초마다 iostat 결과 살펴보기

 

  [root@localhost local]# watch -n 10 iostat

  Every 2.0s: iostat                                                                                          Thu Mar 29 01:56:39 2018

  Linux 2.6.32-696.el6.x86_64 (localhost.localdomain)     03/29/2018    _x86_64_   (2 CPU)

  avg-cpu:  %user   %nice %system %iowait  %steal   %idle

             0.01    0.00    0.01    0.02    0.03   99.93

  Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

  xvda              0.20         0.48         2.80    3503370   20247044

 

ㅇ 5초마다 vmstat 결과 살펴보기

 

  [root@localhost local]# watch -n 5 vmstat

  Every 2.0s: vmstat                                                                                          Thu Mar 29 01:57:11 2018

  procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

   r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

   0  0   9636 1224232 148464 483280    0    0     0     1    3    3  0  0 100  0  0

 

ㅇ 1초마다 apache 프로세스 살펴보기

 

  [root@localhost local]# watch -d -n 1 'ps -ef | grep httpd | grep -v grep'

  Every 1.0s: ps -ef | grep httpd | grep -v grep                                                        Thu Mar 29 01:55:20 2018

  root     10214     1  0 01:54 ?        00:00:00 /usr/local/apache/bin/httpd -k start

  daemon   10217 10214  0 01:54 ?        00:00:00 /usr/local/apache/bin/httpd -k start

  daemon   10218 10214  0 01:54 ?        00:00:00 /usr/local/apache/bin/httpd -k start

  daemon   10219 10214  0 01:54 ?        00:00:00 /usr/local/apache/bin/httpd -k start


 

- 여러 명령어를 조합하는 것도 가능 (기본 2초 간격)

  예를 들어 아래처럼 여러 명령을 지정하고 싶을 때,

   w 명령어를 통한 현재 접속자, loadaverage, uptime 확인

   df 명령을 통한 디스크 사용량

   free 명령을 통한 memory 사용량 

 

[root@localhost local]# watch -d 'w; echo; df -h; echo; free -m'

  Every 2.0s: w; echo; df -h; echo; free -m                                                             Thu Mar 29 02:02:44 2018

   02:02:44 up 83 days, 18:58,  1 user,  load average: 0.00, 0.00, 0.00

  USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

  root     pts/0    10.10.0.1        01:38   12.00s  0.20s  0.02s watch -d w; ech

  Filesystem      Size  Used Avail Use% Mounted on

  /dev/xvda3      7.6G  6.0G  1.2G  84% /

  tmpfs           936M     0  936M   0% /dev/shm

  /dev/xvda1      240M   35M  193M  16% /boot

 

               total       used       free     shared    buffers     cached

  Mem:          2000        805       1194          0        144        471

  -/+ buffers/cache:        188       1811

  Swap:         2047          9       2038

==================================================================


 

ㅇ 특정 폴더에 파일이 생성되는지, 잘 삭제되는지 확인하기

    (watch를 이용하여 ls 명령어를 주기적으로 실행) 

 

예를 들어 /var/www/html/test 라는 폴더를 감시(??)하고자 하시면 다음과 같이 입력하면 됩니다. 

 

watch ls /var/www/html/test

[root@localhost ~]# watch ls /var/www/html/test

Every 2.0s: ls /var/www/html/test

file1

file2

 

2개의 file이 존재하는 것을 확인할 수 있네요.

 

다른 터미널을 열어서 touch file3 명령어를 통해 하나의 파일을 추가하면 watch에 의해 실행되고 있는 ls 명령어를 통해 file3를 확인할 수 있습니다. 

[root@localhost ~]# watch ls /var/www/html/test

Every 2.0s: ls /var/www/html/test

file1

file2

file3

=====================================================================

 

- 프롬프트에서 활용하는 스크립트

 

while true; do 명령어; sleep 1 ; done ; <Enter>

 

sleep 뒤: 반복 시간 간격 (초단위)

 

지정한 명령을 지정한 간격마다 무한 반복 실행합니다.

강제로 종료하고 싶으면 Control-C 키를 누릅니다.

 

예) 큐에 쌓인 메일 수량 확인

while true; do qmail-qstat; sleep 1 ; done ;

 

<이상>

 

반응형

+ Recent posts