Linux中每个用户的内存使用情况?

Jak*_*zok 23 linux memory users

假设我有 20 个用户登录我的 linux 机器。我怎么知道他们每个人使用了多少内存?

Ces*_*arB 21

您可以尝试使用smem(有关更多信息,请参阅ELC2009:使用smem可视化内存使用情况)。尤其sudo smem -u应该给你你想要的信息。

  • 仅供参考,smem 需要内核 >= 2.6.27 (4认同)

小智 10

忽略共享内存问题,这里有一个快速脚本,它为所有登录用户提供 RSS 和 VMEM,按 vmem 排序,并组织成可爱的列:

(echo "user rss(KiB) vmem(KiB)";
 for user in $(users | tr ' ' '\n' | sort -u); do
   echo $user $(ps -U $user --no-headers -o rss,vsz \
     | awk '{rss+=$1; vmem+=$2} END{print rss" "vmem}')
 done | sort -k3
) | column -t
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ndt 5

为了获得 RSS 的总和,我认为以下有效。这将获得用户 kbrandt 和 root 的 RSS 总和。

ps -U kbrandt,root --no-headers  -o rss | (tr '\n' +; echo 0) | bc
Run Code Online (Sandbox Code Playgroud)


jpe*_*lli 5

寻找相同的东西,我发现了这个

ps aux | awk '{arr[$1]+=$4}; END {for (i in arr) {print i,arr[i]}}' | sort -k2
Run Code Online (Sandbox Code Playgroud)

要打印按 mem 排序、按用户分组(列 1,$1)的进程,您可以按其他内容分组,并对其他内容求和,更改 $1 和 $4

  • $1 是第一列:用户名(按此分组)
  • $4 是第四列:%mem(求和)

我很高兴找到解决方案,只是想分享。