$ cat mon-shm.sh
#!/bin/sh
# svmon -P $pid 으로 각 프로세서가 쓰고 있는 메모리를 추산한다.
# 이 값보다 큰 프로세스만 보여준다.
CNT_CHK=8
#echo "CNT_CHK:$CNT_CHK"
# input (file name )
INPUT_FILE_PATH="/home/cts/src/chk/process.lst"
TMP_FILE_PATH="/tmp/tmp-process-shm.lst"
DATE=`date '+%Y-%m-%d %H:%M:%S'`
grep "^[a-zA-Z]" $INPUT_FILE_PATH > $TMP_FILE_PATH
echo "------------------------------------------------------------------------"
echo "$DATE 에 측정했습니다."
echo "------------------------------------------------------------------------"
echo ""
echo "Count 의 최대값은 11(또는 13)입니다."
echo "최대값에 가까워진 프로세스는 공유메모리 attach 수를 낮추어야 합니다 "
echo ""
echo "------------------------------------------------------------------------"
echo ""
while read line
do
eval `echo $line|awk ' { printf(" process=%s;\n", $1) } '`
# echo "process:$process"
cnt=`ps -e|grep $process|grep -v grep|grep -v vi|wc -l`
#echo "cnt:$cnt";
if [ "$cnt" == "" ]
then
cnt=0
fi
if [ "$cnt" -eq 1 ]
then
pid=`ps -e|grep $process|awk '{printf $1}'`
# echo "pid:$pid"
cnt_shm=`svmon -P $pid| grep -e "work shared memory segment" -e "work unused segment" |wc -l`
fi
#exit;
#echo "cnt_shm:$cnt_shm";
if [ "$cnt_shm" == "" ]
then
cnt_shm=0
fi
if [ "$cnt_shm" -gt "$CNT_CHK" ]
then
echo "Pid:[$pid]\tPname:[$process]\tCount:[$cnt_shm]"
fi
#echo "-------------------------------"
done < $TMP_FILE_PATH