2011-08-05 4 views
0

このコードを表示するユーザの処理負荷率(%CPU)Ploblem(表示pr0cess)のPSのLinux]

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 

このコードは同じいくつかのOSにユーザ(UBUNTU)例を示して0 ルート0 ルート1.8 ルート1.3 ルート0 ルート1.1

が、いくつかのOSの例2上の別のユーザー(UNIQ)を示しています ルート11.5 デーモン0 syslog 0 ....

どのようにしてexample2だけ書くことができますか?diff3rentユーザーの%cpuが必要です。

+0

観測のカップル。 'ソート| uniq'を 'sort -u'に単純化することができます。あなたのawkコードの 'printf'呼び出しは' print'でしょう。文字列に ''%''文字が含まれていると、 'printf'は誤動作します。コマンドごとに1つずつ複数の行に分割すると、コードを読みやすくなります。 '\\'文字を継続行として使用してください。あなたがやっていることをやるためのもっと簡単な方法があると確信しています。私は後で見てみるか、誰か他の人がやります。 –

答えて

2

あなたはですべてのことを置き換えることができます。

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

ありがとう、グレンジャックマン – pir8

関連する問題