您的位置:首页 > 运维架构 > Linux

Linux下查看进程占用内存的最好方式

2016-08-09 06:44 429 查看
今天看到stackoverflow上关于linux下如何查看某个进程占用的内存是多少的回答,觉得非常棒,不过是全英文的,很多人可能看不懂,所以我翻译一下
翻译自http://stackoverflow.com/questions/3853655/in-linux-how-to-tell-how-much-memory-processes-are-using
查看进程占用的内存的方式可能比你想象中的要复杂的多。我所找到的最好的方式是在这篇文章里面看到的(https://web.archive.org/web/20101124103342/http://kdedevelopers.org/node/4040)
echo 0 $(awk '/TYPE/ {print "+", $2}' /proc/`pidof PROCESS`/smaps) | bc
pidof PROCESS 就是你想查看的进程的进程PID。TYPE的可选值如下

Rss: 内存占用。进程占用的所有内存,包括跟其他进程共享的内存(直接把共享的整个内存数值加上来)。但是这个值没有包含swap
Shared: 该进程跟其他进程分享的内存
Private: 该进程占用的私有内存。通过这个数据你可以查看到内存泄露问题
Swap 该进程用的swap内存
Pss 按比例计算的内存数量。这是一个很好的看总体内存占用量的参数。这是根据共享进程的数量来调整共享内存数量的内存占用。 如果一个进程占用的私有内存是1MB,使用的共享内存有20MB,但是这个共享内存同时有10个进程(包括它自己在内)在使用,那么PSS就是 1 + 20/10 = 3MB

译者按:
我自己执行这段代码的时候发现bc工具没装,就先用 yum install bc 来安装了一下bc
我先用 ps aux | grep hbase 来找到hbase占用的进程号
然后这是我的执行例子
# echo 0 $(awk '/Pss/ {print "+", $2}' /proc/2871/smaps) | bc
186814
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux memory