如何使用 free -m 获取所有用户的内存使用情况

如何使用 free -m 获取所有用户的内存使用情况

我输入了 free 命令来获取内存使用情况,如下所示:

free -m 

输出:

在此处输入图片描述

我想使用此命令来获取相同的信息,但对于所有用户例如:

在此处输入图片描述

我使用了这个命令...因为它对我来说很容易..将其输出存储在 bash 脚本中的变量中...

答案1

free已经基于系统范围的内存使用情况。

如果您想要针对每个用户执行某些操作,您可以尝试以下操作:

ps aux | awk 'NR>2{arr[$1]+=$6}END{for(i in arr) print i,arr[i]}'

简单解释一下它的awk作用:

  • 去掉第一行
  • 遍历每一行并为每个给定的用户名创建一个数组。对于每个用户名,它都会添加第六列ps aux(驻留集大小)并将它们相加。
  • 之后,它只需遍历数组键即可打印内容。

答案2

一种选择是使用 smem 安装 smem因为free不提供此功能。

$ sudo smem -u -k -t
User     Count     Swap      USS      PSS      RSS 
daemon       1        0   196.0K   197.0K   360.0K 
rtkit        1        0   304.0K   317.0K     1.4M 
[...]
root        44        0   164.3M   197.7M   284.4M 
gert        88        0     1.7G     1.8G     3.2G 
---------------------------------------------------
           159        0     1.9G     2.1G     3.6G

有关 USS 和 PSS 含义的解释,请参阅 smem 手册页的摘录。

            [...] Unshared memory is reported as the USS (Unique Set
   Size).  Shared memory is divided evenly among the processes shar‐
   ing that memory.  The unshared memory (USS) plus a process's pro‐
   portion of shared memory is reported as the PSS (Proportional Set
   Size).  The USS and PSS only include physical memory usage.  They
   do not include memory that has been swapped out to disk.

怀疑RSS 是住宅内存使用情况,在其他实用程序中也称为 RES。有关内存使用情况表达的更多信息,请参阅 Superuser.com 上的此问答:关于内存管理我应该了解些什么?

相关内容