红联Linux门户
Linux帮助

找出占用swap最多的进程

发布时间:2016-01-28 16:14:00来源:linux网站作者:鸿弟

有时候监控出swap的使用量太高,而又不知道swap到底被谁用了,这时可以使用该方法找出占用swap最多的进程。在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些。


1:cat /proc/1/smaps

^Swap开头的那个表示的是占用Swap的量的大小。

那么查看你想要看的进程所使用的swap只需要:

awk ‘/^Swap:/ {SWAP+=$2}END{print SWAP” KB”}’ /proc/$(pid)/smaps


2:要统计出哪个命令占用最高,简单点就直接执行以下命令即可
for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -nrk 2


3:找出占用swap高的进程后,看看能不能做什么调整,如果实在没得调整,就使用下列的命令把swap压入内存吧

swapoff -a && swapon -a  #得先用free -m查看下内存还剩下多少


本文永久更新地址:http://www.linuxdiyf.com/linux/17756.html