我的top
看起来像这样:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6524 asjzdiwq 30 10 500m 41m 24m S 0.0 0.3 0:15.27 php-cgi
21274 asjzdiwq 30 10 500m 41m 24m S 0.0 0.3 0:04.97 php-cgi
9047 asjzdiwq 30 10 500m 40m 24m S 0.0 0.3 0:13.72 php-cgi
26918 asjzdiwq 30 10 499m 40m 24m S 0.0 0.3 0:12.87 php-cgi
13168 ahfvw0d1 30 10 498m 35m 20m S 0.0 0.2 0:03.49 php-cgi
8859 realnoni 30 10 495m 33m 20m S 0.0 0.2 0:11.27 php-cgi
6590 asjzdiwq 30 10 495m 32m 20m S 0.0 0.2 0:13.34 php-cgi
5657 holeyrai 30 10 495m 31m 19m S 0.0 0.2 0:04.47 php-cgi
14480 ripplecr 30 10 498m 31m 17m S 0.0 0.2 0:02.90 php-cgi
14442 ripplecr 30 10 497m 31m 17m S 0.0 0.2 0:02.00 php-cgi
10720 computer 30 10 496m 31m 18m S 0.0 0.2 0:08.75 php-cgi
23821 loghome 30 10 496m 31m 18m S 0.0 0.2 0:02.22 php-cgi
17623 devilsti 30 10 495m 31m 19m S 0.0 0.2 0:05.81 php-cgi
13305 realnoni 30 10 495m 30m 18m S 0.0 0.2 0:06.29 php-cgi
14461 ripplecr 30 10 496m 30m 17m S 0.0 0.2 0:01.47 php-cgi
8738 holeyrai 30 10 495m 30m 18m S 0.0 0.2 0:03.37 php-cgi
17569 devilsti 30 10 495m 30m 18m S 0.0 0.2 0:05.73 php-cgi
13174 ahfvw0d1 30 10 484m 30m 18m S 0.0 0.2 0:04.00 php-cgi
16126 realnoni 30 10 484m 30m 18m S 0.0 0.2 0:12.08 php-cgi
31561 a0w4pkbp 30 10 496m 30m 17m S 0.0 0.2 0:03.54 php-cgi
31565 ahfvw0d1 30 10 484m 29m 17m S 0.0 0.2 0:05.80 php-cgi
21275 asjzdiwq 30 10 484m 29m 18m S 0.0 0.2 0:01.77 php-cgi
您可以看到同一个“USER”可以有多个“COMMAND”作为“php-cgi”运行。我想找出哪个用户运行的进程最多,并统计他们正在运行的进程数量。
答案1
要计算每个用户的所有进程:
ps -eo user|sort|uniq -c|sort -n
或者只让那些运行 php-cgi 的:
ps -eo user:15,cmd|sed -n '/php-cgi/s/ .*//p'|sort|uniq -c|sort -n
答案2
使用ps
。从man ps
:
-U userlist
按真实用户 ID (RUID) 或名称选择。它选择真实用户名或ID在userlist列表中的进程。真实用户 ID 标识创建进程的用户,请参阅 getuid(2)。-u userlist
按有效用户 ID (EUID) 或名称选择。这将选择有效用户名或 ID 在用户列表中的进程。有效用户 ID 描述了进程使用其文件访问权限的用户(请参阅 geteuid(2))。与 U 和 --user 相同。
例如,要查看 user 的所有进程asjzdiwq
,您可以使用:
ps -u asjzdiwq ## Using RUID
ps -U asjzdiwq ## Using EUID