[참고] [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 ;
<이상>
'Linux, Mac' 카테고리의 다른 글
우분투 버전 확인 명령어 (0) | 2018.11.30 |
---|---|
Linux, iostate 명령 (디스크, CPU 이용률 보기) (0) | 2018.11.18 |
우분투 리눅스 기본 명령어 1 (0) | 2018.11.09 |
우분투 18.04에서 키 맵핑(설정) 변경하기 (0) | 2018.07.31 |
grep 명령으로 찾은 줄의 앞 뒤를 출력하기 (0) | 2018.06.22 |