ps の httpd から pid をとりだして、 /proc/[pid]/smaps から
PRIVATE だけを足したもの
echo -e "PID\tRSS\tSHARED\tPRIVATE";
ps -ef | grep httpd | grep -v root | grep -v grep | while read line; do
args=($line);
echo -ne "${args[1]}\t"
cat /proc/${args[1]}/smaps | awk '
BEGIN{ rss=0; shared=0; private=0; }
/Rss/{rss += $2;}
/Shared/{shared += $2;}
/Private/{private += $2;}
END{ printf("%.1f\t%.1f\t%.1f\n",
rss / 1024,
shared / 1024,
private / 1024)
}';
done > /tmp/apache-mem.txt
sort -nk 4 /tmp/apache-mem.txt
echo -e "PID\tRSS\tSHARED\tPRIVATE";
cat /tmp/apache-mem.txt | awk 'BEGIN{i=0; sum=0;}{i+=1;sum+=$4}END{ print "Total: " sum " Mb " i " Processes"}'
以下にあるスクリプトがうまくうごかなかったので、すこし手直ししました。