https://onitroad.com 更多教程

对于 UEK2(2.6.39) 或者更高版本的内核

检查特定进程的交换使用情况更容易,只需检查 /proc/[PID]/status 中的“VmSwap”列。
这表示交换空间的总使用量作为一个值。
此列在内核 < 2.6.39 的 /proc/[PID]/status 中不存在。

例如,要使用较大的交换使用量对进程进行排序,请运行以下脚本:

# for file in /proc/*/status ; do awk '/VmSwap|Name/{printf  " " }END{ print ""}' $file; done | sort -k 2 -n -r | more

这篇文章中显示/计算的值并不表示已用交换空间的准确大小,而只是表示粗略的近似值。
有些(如共享库)可能被重复计算,而其他(如交换缓存)并没有真正交换。

如何检查 Linux 中每个进程的 Swap 使用情况

这篇文章展示了如何检查每个进程的交换使用情况,

如何知道哪个进程会消耗最大的交换空间?

对于所有内核

交换使用在 /proc/[PID]/smaps 中显示为“交换”列。
这表示每个内存范围的交换内存大小,因此所有这些值的总和显示了进程的总交换使用量。

例如,下面的简单脚本计算 PID = 1027 的进程的总交换使用量:

# echo $((`grep Swap /proc/1027/smaps | awk '{ print ; }' | tr '\n' '+'`0))
日期:2020-09-17 00:13:16 来源:oir作者:oir