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

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

在 Solaris 上,如何找出某个进程占用了多少交换空间?或者更好的是,如何按交换空间使用情况排序列出所有正在运行的进程?

我特别针对 Solaris 询问这个问题。我没有top可用的命令,似乎prstatswap无法提供有关给定进程正在使用多少交换空间的信息。

答案1

您可以使用以下命令:

pmap -S <pid>

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

借助一些 shell 魔法,你可以将其包装在 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>

答案2

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

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

Address  Kbytes    Swap Mode Mapped File

total Kb  240576  235028`

答案3

对于 i 在 * 中;执行 pmap -S $i 2> /dev/null | nawk -v PID=$i '$1 == "total" && $4 > 0 {print PID,"=>",$4,$2}';完成 |sort -rn -k 3,3

相关内容