Is there any way to get ps output programmatically?

戏子无情 提交于 2019-12-05 14:29:12
extraneon

You could check out this question about parsing ps output using Python.

One of the answers suggests using the PSI python module. It's an extension though, so I don't really know how suitable that is for you.

It also shows in the question how you can call a ps subprocess using python :)

My preference is to do something like this.

collection.sh

for (( ;; ))
do
    date; ps -p $1 -o '%cpu'
done

Then run collection.sh >someFile while you "slam the server with requests".

Then kill this collection.sh operation after the server has been slammed. At the end, you'll have file with your log of date stamps and CPU values.

analysis.py

import datetime
with( "someFile", "r" ) as source:
    for line in source:
        if line.strip() == "%CPU": continue
        try:
            date= datetime.datetime.strptime( line, "%a %b %d %H:%M:%S %Z %Y" )
        except ValueError:
            cpu= float(line)
            print date, cpu # or whatever else you want to do with this data.

You could query the CPU usage with PySNMP. This has the added benefit of being able to take measurements from a remote computer. For that matter, you could install a VM of Zenoss or its kin, and let it do the monitoring for you.

if you don't want to invoke PS then why don't you try with /proc file system.I think you can write you python program and read the files from /proc file system and extract the data you want.I did this using perl,by writing inlined C code in perl script.I think you can find similar way in python as well.I think its doable,but you need to go through /prof file system and need to figure out what you want and how you can get it. http://www.faqs.org/docs/kernel/x716.html above URL might give some initial push.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!