在linux中,可以通过查看文件/proc/$PID/status以获取指定进程资源(内存,堆栈,信号量,子父进程)的使用情况。
以下脚本的实现,就是通过查看status文件中VmRSS的字段来看系统或进程使用的内存情况。
代码如下:
#!/bin/bash
#filename chk_memory.sh
#edit by www.jb200.com
echo -n "PidName " > /tmp/pid.f
echo "MeMery " >> /tmp/pid.f
PIDPATH=/proc/
TOTLE=0
cd $PIDPATH
DOC=`ls`
for DOCNAME in $DOC
do
if [ -d $DOCNAME ]; then
cd $DOCNAME
if [ -f status ];then
MEMERY=`grep VmRSS status | awk -F':' '{print $2}' | awk '{print $1}'`
PIDNAME=`grep Name status | awk -F':' '{print $2}'`
if [ $MEMERY ]; then
echo -n $PIDNAME >> /tmp/pid.f
echo -n " " >> /tmp/pid.f
echo $MEMERY >> /tmp/pid.f
TOTLE=`expr $TOTLE + $MEMERY`
cd ..
else
cd ..
fi
else
cd ..
fi
fi
done
TOTLE=`expr $TOTLE / 1024`
echo "TOTLE USERD: $TOTLE MB" >> /tmp/pid.f
cat /tmp/pid.f
调用示例,如下图:
上图展示了部分结果,限于篇幅,仅提供以上截图。
2,统计本机内存情况和使用状况的脚本
调用示例,如下图: