사용자별 프로세스 수를 확인해야 합니다. 예를 들어 나는 그래
ps -ef | grep apache
여기에는 모든 아파치 프로세스가 나열됩니다. 이제 각 사용자에 대해 Linux에서 실행 중인 프로세스 수를 계산하고 싶습니다.
어떻게 해야 얻을 수 있나요?
답변1
짧은 솔루션:
ps -eo "%U" --sort=user h | uniq -c
--sort=user
- 정렬 기준user name
uniq -c
- 고유 사용자당 프로세스 수를 계산합니다.
답변2
한 가지 해결책:
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