Solaris:如何列出每个进程的交换空间?

在Solaris上,我怎样才能找出给定进程占用多less交换空间? 或者甚至更好,我怎样才能列出所有正在运行的进程按交换空间的使用sorting?

我特别要求Solaris。 我没有top命令可用, prstatswap都不能提供给定进程使用多less交换空间的信息。

你可以使用这个命令:

 pmap -S <pid> 

查看所有内存统计信息,包括交换使用情况。

用小魔法你可以把它包装在一个bash循环中:

 cd /proc for i in *; do SWAP=`pmap -S $i | grep ^total | awk '{ print $3; }'` [ "xx$SWAP" != "xx" ] && echo "$SWAP bytes $i" done | sort -n 

输出以字节为单位,格式为:

 <number> bytes <pid> 

我不确定$ 3是否与您想要的列匹配,因为这是“Kbytes”而不是“Swap”列。

在标题中,它是第三个,但不是grep total (因为“总Kb”中的空白):

 Address Kbytes Swap Mode Mapped File total Kb 240576 235028`