[SE] watch 로 시스템 모니터링
*추가)
- 2003.01.09, netstat
안녕하세요?
...
이곳 팁 게시판에 `watch`에 관한 팁이 없군요.
watch - execute a program periodically, showing output fullscreen
(주기적으로 실행한 프로그램 결과를 전체 화면에 출력함)
[확인]
$ which watch
/usr/bin/watch
$ rpm -qf `which watch`
procps-2.0.7-3 <-- 제 시스템은 좀 오래되었군요.T.T
[사용법]
$ watch --help
Usage: watch [-dhnv] [--differences[=cumulative]]
[--help] [--interval=] [--version]
-d, --differences[=cumulative] highlight changes between updates
(cumulative means highlighting is cumulative)
-h, --help print a summary of the options
-n, --interval= seconds to wait between updates
-v, --version print the version number
(번역은 안해도 되겠죠..^.^)
(기본적으로 2초 간격으로 화면 갱신합니다.)
*기본 사용예)
$ watch [-d] [-n seconds] 'command...'
가장 간단한 예부터 봅시다.
예를들어, 실시간(1초간격)으로
바뀌는 시스템의 UPTIME 값을 화면에 계속
출력해 봅시다.
$ watch -d -n 1 'cat /proc/uptime'
Every 1s: cat /proc/uptime Sat Jan 4 14:41:18 2003
11554.91 11516.56
종료는 [Ctrl + C]입니다.
(눈이 아프다면, -d 옵션을 끄는것이 좋겠군요.)
/proc/uptime 외에,
/proc/loadavg (시스템 부하량 모니터링, `top`으로 가능)
/proc/meminfo (메모리 정보)
...(기타)
이번에는 (`top`처럼) uptime과 loadavg를 한꺼번에 출력해 봅시다.
(2초간격으로)
$ watch 'cat /proc/{loadavg,uptime}'
....
(생략)
이번에는 `tail -f`와 같이 실시간으로 변화는 파일의 내용을
확인해 봅시다.
(예:/var/log/messages,
root 권한 필요)
$ watch -n 1 'tail -n 20 /var/log/messages'
....
(생략)
이번에는 실시간으로 사용자를 확인해 봅시다.
(명령어: w, 2초 간격)
$ watch -d w
....
(생략)
이왕 시작했으니 시스템 프로세스도 실시간으로 확인해
봅시다.
(아파치 프로세스만 보기)
$ watch -d -n 1 'ps -ef | grep httpd | grep -v grep'
....
(생략)
이번에는 netstat 명령어를 사용해서 실시간으로 열려있는
포트(tcp/udp)와 해당 프로그램을 모니터링해 봅시다.
(시스템에 따라서 root 권한 필요함)
# watch -d -n 3 'netstat -atnup'
....
(생략)
마지막으로 앞의 여러가지 명령어를 조합해 봅시다.
- 현재 접속한 모든 사용자 출력
- httpd 프로세스 최근 20개 출력
- /var/log/messages 최근 10 줄 출력
- 추기 2초 간격
- (root 권한이 필요하겠군요)
# watch -d 'w; echo; ps -ef | grep httpd | grep -v grep | tail -n 20;
echo; tail -n 10 /var/log/messages'
(명령어들을 ';'로 구분함, echo는 공백줄을 출력하기 위해서)
(나머지는 스스로 응용해 보세요..)
(자기만의 쉘스크립트로 작성해 놓으면 편하겠군요..물론
좀 응용해서..)
EOF
|