我想通过geektools在我的桌面上使用ps来查看哪些进程正在使用什么。 目前我的命令是:
ps -amcwwwxo "command %mem %cpu" | grep -v grep | head -13
问题在于,当我使用chrome时,“Google Chrome He”进程占据了13条显示行中的大多数。
有没有办法将所有同名进程的mem和cpu用法加在一起?通过ps或通过另一个命令管道。
答案 0 :(得分:3)
您可以使用awk
和sort
的组合:
(
printf "%-20s %-8s %-8s\n" "COMMAND" "%MEM" "%CPU"
/bin/ps -amcwwwxo "command %mem %cpu" |
/usr/bin/awk -F" " '
BEGIN {
idx=0
format="%-20s /%-8s/ %-8s\n"
}
{
idx = idx + 1
col1=$0
col2=$(NF-1)
col3=$NF
sub(/[[:space:]]+[^ ]+[[:space:]]+[^ ]+[[:space:]]*$/,"", col1)
a[idx]=col1
b[col1]+=col2
c[col1]+=col3
}
END {
for(i=2; i<=idx; i++)
{
if (a[i] in b)
{
printf format, a[i], b[a[i]], c[a[i]]
delete b[a[i]]
}
}
}
' |
/usr/bin/sort -rn -t '/' -k 2,2 | /usr/bin/tr -d '/' | /usr/bin/head -n 15
)
答案 1 :(得分:1)
寻找同样的东西,我想出了这个
ps aux | awk '{arr[$1]+=$4}; END {for (i in arr) {print i,arr[i]}}' | sort -k2
打印按mem排序的进程,按用户分组(column1,$ 1),你可以按其他东西分组,并总结其他东西,改变$ 1和$ 4
我很高兴找到解决方案,只是想分享。
答案 2 :(得分:1)
top cpu group:
sudo ps aux | awk '{arr[$11]+=$3}; END {for (i in arr) {print arr[i],i}}' | sort -k1nr | head -n 10
答案 3 :(得分:0)
它不存在,您应该编写自己的代码/命令/脚本来执行此操作。由于所有Google Chrome Helper流程都是不同的流程,因此您可以编写一个脚本,使用父流程ID计算所有Chrome流程(帮助程序,插件主机等)。