$ 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