统计系统中所有进程占用内存的方法

统计系统中所有进程所占用的内存的方法

一、首先先来看proc中对应的两个文件,/proc/[pid]/status和/proc/[pid]/statm;

/proc/[pid]/statm的显示如下:
在这里插入图片描述
对应的各个参数的含义为:(单位是页,一页为4KB;与status文件中的各个参数相对应)

statm 含义 对应status参数
Size (pages) 任务虚拟地址空间的大小 VmSize/4
Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
Shared(pages) 共享页数
Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )/4
Dt(pages) 脏页数量

与之相对应的文件为:proc/[pid]/status,包含了该进程的基本上所有的有用信息统计
在这里插入图片描述

二、统计系统中所有进程的物理内存使用情况

基本思路:遍历/proc下所有的进程,并提取statm下的第二列数据相加,得到所有进程使用的物理页情况,最终乘以4即内存使用情况(KB为单位),脚本代码如下:

#/bin/bash                                                                                                      
for PROC in `ls  /proc/|grep "^[0-9]"`
do
  if [ -f /proc/$PROC/statm ]; then                     //遍历整个proc下的进程
      TEP=`cat /proc/$PROC/statm | awk '{print ($2)}'`  //提取每个进程的statm第二列数据
      RSS=`expr $RSS + $TEP`                            //逐个相加
  fi
done
RSS=`expr $RSS \* 4`                                    //将单位为页转换为KB
echo $RSS"KB"


猜你喜欢

转载自blog.csdn.net/biaotai/article/details/107236547