psinfo_dailymon
사용법
psinfo_dailymon directory condition [interval count]
Options are as follows:
directory directory to save data
condition the same condition for psinfo -M option
interval interval time(second)
count times to get the info
설명
psinfo_dailymon은 다음과 같은 내용을 가지고 있는 쉘 스크립트이고, cron 테이블에
등록하여 주기적으로 프로세스들을 모니터하는데 사용된다.
#! /usr/bin/ksh
#
if [ $# = 4 ]
then
DIRECTORY=$1
CONDITION=$2
INTERVAL=$3
COUNT=$4
elif [ $# = 2 ]
then
DIRECTORY=$1
CONDITION=$2
INTERVAL=
COUNT=
else
echo "Usage: psinfo_dailymon directory condition [interval count]"
exit 1
fi
OUTPUT=$DIRECTORY/psinfo.`date +%d`
#
# Remove old data file
# Append today's data
#
if [ -f $OUTPUT ]
then
find $OUTPUT -mtime +7 -exec rm {} \;
fi
exec /opt/JSparm/bin/psinfo -M $CONDITION $INTERVAL $COUNT >> $OUTPUT &
|
이 쉘 스크립트는 psinfo -M 옵션으로 프로세스의 상태를 조사하여,
지정한 조건에 해당되는 프로세스가 있으면, 그 프로세스 정보를 psinfo_dailymon
명령어에 지정한 디렉토리에 psinfo.dd (dd는 day(01-31)) 형식의 파일명으로 저장한다.
같은 날에 여러 번 psinfo_dailymon 명령어를 실행하면 psinfo.dd 파일에 내용을 추가하고,
지난 달의 데이타가 있으면, 그 파일을 지우고 새로 만든다.
cron 테이블에 등록할 경우 다음과 같이 2 가지의 경우가 있을 수 있다.
0 0 * * * /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=30 60 1440
|
위의 /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=30 60 1440 명령어는 cron에 의해 매일 0 시에
실행된다.
이 명령어는 프로세스 정보를 60초 간격으로 1440번(60 *24 = 1440: 1 day) 조사하여 CPU 사용률이
70% 이상이거나 HP+STK(heap+stack)이 30MB 이상인 프로세스 정보를 /PSLOG/psinfo.dd
(dd는 day(01-31)) 파일에 저장한다.
* * * * * /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=30
|
위의 /opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=30는 매분 cron에 의해 실행된다.
여기서는 psinfo_dailymon은 한번만 데이타를 수집한다.
위의 두개의 cron entry중 필요한 것을 선택하여 지정하면 된다.
여기서 wcpu를 사용한 것에 유의하십시오.
/opt/JSparm/bin/psinfo_dailymon /PSLOG wcpu=70,hs=30 60 1440 명령어의 실제 실행되는 명령어는 다음과 같다.
PID PPID USERNAME SIZE RSS HP+STK S NLWP WCPU% CPU% MEM% ELAPSED TIME CMDLINE
22953 1 root 0.953M 0.859M 0.086M S 1 0.08% 0.08% 0.2% 0d57724 19.23 /opt/JSparm/bin/psinfo -M wcpu=70,hs=30 60 1440
|
psinfo_dailymon과 gwserv를 결합하여 사용하면, 사용자는 리모트 시스템에서 쉽게 psinfo_dailymon의 결과를
볼 수 있다.
예를 들어 psinfo_dailymon의 결과를 /PSLOG 디렉토리에 저장하고, gwserv의 도큐멘트 루트 디렉토리를 /PSLOG로
다음과 같이 지정하고,
# gwserv -p 9001 -d /PSLOG
|
리모트 시스템에서 htpp://hostname:9001 주소로 시스템으로 접속하면, 다음과 같은 내용이
보인다.
Directory listing of /
Up to higher level directory
Name Size Date
psinfo.01 0 Sep-01-2001 00:00:00
psinfo.02 0 Aug-02-2001 00:00:00
psinfo.03 0 Aug-03-2001 00:00:00
psinfo.04 0 Aug-04-2001 00:00:00
psinfo.05 0 Aug-05-2001 00:00:01
psinfo.06 0 Aug-06-2001 00:00:00
psinfo.07 0 Aug-07-2001 00:00:00
psinfo.08 838 Aug-08-2001 17:41:11
psinfo.09 0 Aug-09-2001 00:00:00
psinfo.10 0 Aug-10-2001 00:00:01
psinfo.11 0 Aug-11-2001 00:00:00
psinfo.12 0 Aug-12-2001 00:00:00
psinfo.13 0 Aug-13-2001 00:00:00
psinfo.14 0 Aug-14-2001 00:00:00
psinfo.15 0 Aug-15-2001 00:00:00
psinfo.16 0 Aug-16-2001 00:00:00
psinfo.17 0 Aug-17-2001 00:00:00
psinfo.18 0 Aug-18-2001 00:00:00
psinfo.19 0 Aug-19-2001 00:00:01
psinfo.20 0 Aug-20-2001 00:00:00
psinfo.21 0 Aug-21-2001 00:00:01
psinfo.22 0 Aug-22-2001 00:00:00
psinfo.23 0 Aug-23-2001 00:00:00
psinfo.24 0 Aug-24-2001 00:00:01
psinfo.25 0 Aug-25-2001 00:00:00
psinfo.26 0 Aug-26-2001 00:00:00
psinfo.27 0 Aug-27-2001 00:00:00
psinfo.28 0 Aug-28-2001 00:00:01
psinfo.29 0 Aug-29-2001 00:00:01
psinfo.30 0 Aug-30-2001 00:00:00
psinfo.31 434 Aug-31-2001 15:26:01
|
위의 내용중에서 파일의 크기가 0 이 아닌 파일을 클릭하면, 지정한 조건에 해당하는
프로세스 정보를 볼 수 있다.
ParmView를 위한 gwserv가 실행되어 있으며, gwserv를 별도로 실행하는 것 보다,
ParmView 홈 디렉토리 밑에 /PSLOG 디렉토리를 심볼릭 링크로 만들어 두면,
9900 포트로 psinfo_dailymon 로그를 쉽게 볼 수 있다.
# cd /opt/JSparm/parmview
# ln -s /PSLOG pslog
|
위와 같이 심볼릭 링크를 만들었다면, 다음과 같은 URL로 사용할 수 있다.
http://hostname:9900/pslog
|