ユーザー固有のプロセス数を確認する必要があります。たとえば、
ps -ef | grep apache
これには、すべてのApacheプロセスが一覧表示されます。これで、各ユーザーに対してLinuxで実行されているプロセスの数を計算したいと思います。
どうすれば入手できますか?
答え1
短い解決策:
ps -eo "%U" --sort=user h | uniq -c
--sort=user
- ソート基準user name
uniq -c
- 一意のユーザーあたりのプロセス数を計算します。
答え2
1つの解決策:
gohu@Luna:~$ ps -ef | grep -v '^UID' | awk '{print $1}' | sort | uniq -c | sort -rg
151 gohu
149 root
2 nobody
2 avahi
1 syslog
1 rtkit
1 ntp
1 message+
1 daemon
1 colord
そして:
ps -ef
:ユーザーを行の最初の要素としてプロセスを一覧表示します。grep -v '^UID'
: ヘッダー行の削除awk '{print $1}'
:行の最初の要素を取得します(ユーザー)。sort
:実行する前にソートが必要ですuniq -c
uniq -c
:重複行をマージし、発生回数を計算します。sort -rg
: 数値の並べ替え、最も頻繁に発生する項目を先頭に配置
答え3
努力する
ps -e -o user h| awk '{u[$1]++} END { for (user in u ) printf "%s:%d\n",user,u[user]}'
どこ
-e
すべてのプロセスを一覧表示-o user
出力ユーザーのみh
タイトルを表示しない- awk はユーザー数を計算し、ps 出力の末尾にその数を表示します。
編集:@Gohuのおかげで(一種)短縮することができます。
ps -e -o user h| sort | uniq -c | sort -rg
答え4
POSIX的に:
ps -Ao user= | sort | uniq -c | sort -rn