如何查看 Linux 中每个系统用户的总 CPU 和内存使用情况

如何查看 Linux 中每个系统用户的总 CPU 和内存使用情况

我知道top命令可以查看进程的CPU和内存使用情况,但是系统的一些用户会产生很多的进程,如果我想知道某个用户的总CPU和内存使用情况,我必须自己去统计,那么,有没有一个命令可以查看Linux下每个系统用户的总CPU和内存使用情况,并且按系统用户名排序?

答案1

我认为没有直接的方法可以做到这一点 - 但一种方法是解析 top 的输出。以下

top -b -n 1 -u username | awk 'NR>7 { sum += $9; } END { print sum; }' 

就是这样。对于 top 中的每个进程(对于给定用户),awk 将删除每行的第 9 个分隔字段(即 CPU %),向下 7 行(即 top 表的开头),然后对它们求和。至少可以节省您的时间!

围绕这个问题进行了几次讨论...

如何锻造Stackchange

答案2

补充@hygris命令,我们可以添加以下内容并同时获取所有用户的信息:

top -b -n 1  |\
 awk ' BEGIN{OFS="\t"} 
 NR>7{ sum[$2] += $9; t += $9;} 
END {print "user","%CPU" ; for (u in sum){print u,sum[u]}print "total",t}'

上述命令将在最后打印总数。

如果要添加内存:

 top -b -n 1  |\
  awk ' BEGIN{OFS="\t"} 
     NR>7 { sum[$2] += $9; t += $9; mem[$2] += $10; tm += $10} 
     END {print "user","%CPU","%MEM" ; for (u in sum){
         print u"\t"sum[u]"\t"mem[u];} print "total",t,tm}' 

然后,当然,如果这是您的目标,您可以通过管道传输并排序输出。

相关内容