在管理 Linux 服务器的时候,我们有时候会有需要查看哪些进程使用了 swap 空间。其实我们可以通过/proc/pid/下的smaps来获得。使用下面的命令可以列出所有进程占用的swap分区的大小,方便我们分析问题。

for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head

获取到占用Swap分区比较多的PID,然后就可以通过PID获取到进程的相关信息了。

[root@iZ23hh6yk41Z ~]# ps aux | grep ${pid}