Linux进程信息的简单接口
项目描述
Python包proc公开了Linux 进程信息伪文件系统中的进程信息,该系统位于/proc。当前,proc包已在cPython 2.7、3.5+和PyPy(2.7)上进行了测试。自动化测试套件定期在Ubuntu Linux上运行,但其他Linux变体(包括基于Debian Linux的Linux变体)也应正常运行。有关使用说明,请参阅文档。
安装
proc包可在PyPI上找到,这意味着安装应该像这样简单
$ pip install proc
实际上有无数种安装Python包的方法(例如,每个用户的site-packages目录,虚拟环境或仅安装到系统范围内),我没有在这里讨论这个问题的意图,所以如果你感到害怕,请在返回这些说明之前了解你的选项;-)
安装完proc包后,请前往文档,查看一些如何使用proc包的示例。
设计选择
proc包的创建考虑了以下因素:
- 完全针对Linux系统
它解析/proc,不解析其他内容 ;-).
- 完全使用Python实现
没有二进制/编译组件,与psutil相反,psutil虽然更便携,但安装时需要编译器。
- 文档齐全
文档应该使您轻松上手(与procfs相反,我评估了它并最终放弃了它,因为我不得不阅读其源代码,结果对其实现感到失望)。
- 稳健的实现
读取/proc本质上容易受到竞争条件的影响,proc包考虑了这一点,实际上测试套件中包含一个创建竞争条件的测试,以验证它们是否得到正确处理。尽可能多地隐藏proc包的API中的竞争条件,并且在这种情况下,后果被清楚地记录。
- 分层API设计(每个层次都进行了文档说明)
在较低层次的抽象之上构建较高层次的抽象
- proc.unix模块
定义了一个简单的进程类,它将进程ID和常见的UNIX信号组合起来,以实现进程控制原语,如等待进程结束和优雅或强制终止进程。
- proc.core模块
基于proc.unix模块,提供了一个简单、快速且易于使用的API,用于访问/proc中可用的进程信息。如果您正在寻找一个简单且/或快速的接口,可以为您完成繁重的解析工作,那么这正是您所需要的。
- proc.tree模块
基于proc.core模块,提供一个内存中的树形数据结构,模仿实际的进程树,便于搜索和遍历进程树。
- proc.apache模块
基于proc.tree模块,实现了一个易于使用的Python API,用于收集Apache Web服务器工作进程内存使用的指标,包括对WSGI进程组的支持。
- proc.cron模块
实现了命令行程序cron-graceful,该程序可以优雅地终止cron守护进程。该模块基于proc.tree模块构建,作为对proc包可能性的演示,以及一个实用工具,可用于安装了Python和cron的任何Linux系统。
- proc.notify模块
实现了命令行程序notify-send-headless,可用于在无头环境(如cron作业和系统守护进程)中运行程序notify-send。
历史
多年来,我一直在编写解析/proc的shell和Python脚本(开始时似乎很有吸引力)。有时我不得不在个人项目和职业项目之间复制/粘贴Python代码片段,因为代码基本上已经完成,只是没有以易于分享的形式提供。
当我开始修复该代码不同副本中的错误时,我决定是时候将我渐渐欣赏的所有功能整合到一个经过良好测试和良好文档化的Python包中,并拥有易于使用的API,然后与世界分享。
这意味着,尽管我在2015年3月对< cite>proc cite>包进行了第一次提交,但其中很大一部分代码已经以各种形式存在了多年。
类似项目
以下是其他几个公开进程信息的Python库。如果< cite>proc cite>包不适合您,请尝试使用以下之一。以下摘要是从每个包的文档中复制和/或改写的。
联系
proc的最新版本可在PyPI和GitHub上找到。文档托管在Read the Docs上,包括变更日志。有关错误报告,请创建GitHub上的一个问题。如果您有任何问题、建议等,请随时通过peter@peterodding.com发送电子邮件。
许可证
本软件根据MIT许可证授权。
© 2020 Peter Odding.
项目详情
下载文件
下载您平台上的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
proc-1.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6c79142bbde22db6f8d1aa7eaf65c9d0667b6abc0ac2433803ae5f03e46d7278 |
|
MD5 | 695efd9b0acb91aec2407b3cc661bb28 |
|
BLAKE2b-256 | 80d8b2aaabd202bc6a11d21049d1cf01b788412d2fffe5136af96020c7ba91a0 |