我想在编写以内核模式运行的“进程分析器”时寻求一些指导。我要求内核模式分析器,因为我运行大量的应用程序,我不希望我的分析器被换出。
当我说“进程分析器”时,我的意思是监视进程的资源使用情况。包括线程的使用及其统计信息。
我想在python中写这个。请指出一些模块或有用的资源。
请为我提供指导/建议。
编辑:::想补充一点,目前我的兴趣是只为linux编写。然而,在我建立之后,我将不得不支持窗户。
答案 0 :(得分:7)
在Python中执行进程监视部分非常困难,因为python解释器不在内核中运行。
我怀疑有两种简单的方法:
好的,在编辑后跟进。
首先,你无法编写在内核中运行的代码,在python中,并且可以在Linux和Windows之间移植。或者至少如果你这样做,这将是一个永远生活在荣耀中的黑客。
尽管如此,如果您的目的是处理Python,那么有许多Python工具可用于在运行时从Python解释器获取信息。
如果您希望通常从其他进程获取进程信息,那么您将需要检查各种OS API中可用的选项。 Linux有一个/ proc文件系统;这是一个有用的开始。我怀疑Windows有类似的API,但我不知道它们。
如果你必须编写内核代码,你几乎肯定需要用C或C ++编写它。
答案 1 :(得分:3)
不尝试让python在内核空间中运行!
使用现有工具并使其吐出可以被吸收到Python中的XML会更好。我不想将Python解释器移植到内核模式(这听起来很糟糕)。
/ proc选项听起来不错。
一些代码代码,用于读取proc信息以确定内存使用情况等。应该让你去:
http://www.pixelbeat.org/scripts/ps_mem.py 使用Python通过/ proc / smaps 读取进程的内存信息,如charlie建议的那样。
答案 2 :(得分:0)
PSI
了吗? (http://www.psychofx.com/psi/)
“PSI是一个Python模块,提供对实时系统和流程信息的直接访问.PSI是一个Python C扩展,可以直接从系统调用中提供对系统信息的最有效访问。”
它可能会给你你想要的东西。 ....或者至少是一个起点。
编辑2014:
我建议您查看psutil
:
https://pypi.python.org/pypi/psutil
psutil
得到了积极维护,并具有一些漂亮的过程监控功能。 PSI
似乎有点死(2009年最后一次发布)。
答案 3 :(得分:0)
你对其他答案的一些评论表明你是一个相对缺乏经验的程序员。因此,我强烈建议您远离内核编程,因为即使是有经验的程序员也很难。
你为什么要写一些