这个代码的问题(显示过程)[ps Linux]

时间:2011-08-05 16:20:24

标签: bash

此代码显示用户的进程负载(%cpu)

ps aux | awk 'NR!=1{print $1}' | sort | uniq | awk '{print "ps aux | grep "$1}' | awk '{printf $0; printf " | awk"; printf "{sum +="; print "$3}" }' | sed "s/{/ '{/g" | sed "s/3}/3} END {print \$1,sum}'/g" > 0.out

chmod 755 0.out

bash 0.out

此代码在某些操作系统(UBUNTU)示例中显示相同的用户: 根11.5 根0 根0 根1.8 根1.3 根0 根1.1

但在某些操作系统示例2上显示不同的用户(uniq): 根11.5 守护进程0 syslog 0 ....

我怎么能只为example2写。我想要diff3rent用户的%cpu。

1 个答案:

答案 0 :(得分:2)

您可以将所有内容替换为:

ps ahx -o "%U %C" | awk '
  {cpu[$1] += $2} 
  END {for (user in cpu) {print user, cpu[user]}}
'