web-dev-qa-db-ja.com

ps auxコマンドの各ユーザーのプロセス数

ps auxで各ユーザーが実行したプロセスをカウントするスクリプトを作成するにはどうすればよいですか。これを使った

ps aux  | awk '{print $1}' | grep root | wc -l

ただし、rootユーザーの数のみが表示されます。各ユーザーのプロセス数をリストしたい。私はこのようなものが必要です:

root    20
jamshi  15 
7
Jamsheer P

ps -fo user | sort | uniq -cは試してみる価値があります。

コマンド ps -eo user=|sort|uniq -cは、ユーザーごとのプロセス数をリストします。

ps -eo user=|sort|uniq -c
      2 avahi
      1 kernoops
      1 messagebus
      1 nobody
    231 root
      1 statd
      5 steve
      1 syslog

列の順序を反転して読み取る必要がある場合は、awk '{ print $2 " " $1 }'

14
steve

あなたが試すことができます

ps aux |
awk 'NR>1{tot[$1]++;}
     END{for(id in tot)printf "%s %s\n",id,tot[id]}'
3
meuh