我知道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 表的开头),然后对它们求和。至少可以节省您的时间!
围绕这个问题进行了几次讨论...
答案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}'
然后,当然,如果这是您的目标,您可以通过管道传输并排序输出。