首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按进程数打印前10名用户?

问如何按进程数打印前10名用户?
EN

Stack Overflow用户
提问于 2010-10-14 07:47:07
回答 1查看 213关注 0票数 0

如何根据运行的进程数来打印linux发行版上的前10名用户?我已经成功地使用shell脚本实现了这一点,但现在我对如何使用Python来实现这一点很感兴趣。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-14 09:05:02

解析ps aux的输出并不是很令人愉快,而且可能很棘手,因为不能保证格式在所有的Linux系统上都是相同的。

安装像psutil或PSI这样的第三方工具应该会让事情变得简单和可移植。

如果您正在寻找不安装第三方模块的纯Linux解决方案,则以下内容可能会有所帮助:

在现代的Linux系统中,所有进程都按其pid在/procs目录中列出。目录的所有者就是进程的所有者。

代码语言:javascript
复制
import os
import stat
import pwd
import collections
import operator

os.chdir('/proc')
dirnames=(dirname for dirname in os.listdir('.') if dirname.isdigit())
statinfos=(os.stat(dirname) for dirname in dirnames)
uids=(statinfo[stat.ST_UID] for statinfo in statinfos)
names=(pwd.getpwuid(uid).pw_name for uid in uids)
counter=collections.defaultdict(int)
for name in names:
    counter[name]+=1
count=counter.items()
count.sort(key=operator.itemgetter(1),reverse=True)
print('\n'.join(map(str,count[:10])))

收益率

代码语言:javascript
复制
('root', 130)
('unutbu', 55)
('www-data', 7)
('avahi', 2)
('haldaemon', 2)
('daemon', 1)
('messagebus', 1)
('syslog', 1)
('Debian-exim', 1)
('mysql', 1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3928959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档