利用Python获取系统的进程信息

目前我只探索了两种方法,一种是利用psutil(一个Python Package),另一种只针对Windows系统,利用它自带的tasklist命令。
一. 利用Psutil获取系统的Running Process信息
注意我把Running特意用红色标出,这是提醒大家利用psutil只能获取当前系统正在运行的进程。如果是一个程序卡死了(Not Responding),则psutil无法获取到它的信息,我猜测此时这个进程是出于挂起的状态。
Psutil的Github首页上有简单的使用文档:https://github.com/giampaolo/psutil  文档:http://pythonhosted.org/psutil/
 
二. 利用Windows系统中的tasklist命令
这时候Python只是一个用来处理文本信息的工具而已。
使用 tasklist /V 可以获取进程的详细信息。
tasklist
 
下面是一个例子,检测Firefox的状态,如果它卡死了,则干掉他。

import os
import time
def kill_firefox_if_not_responding(time_interval):
    while(True):
        p = os.popen("tasklist /V")
        for line in p.readlines():
            line = line.strip()
            if line.lower().find("firefox") != -1:
                if line.lower().find("responding") != -1:
                    firefox_pid = line.split()[1]
                    os.popen("taskkill /F /T /PID %s" %(firefox_pid, ))
                    print("firefox closed at:  " + time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
        time.sleep(time_interval)
if __name__ == "__main__":
    kill_firefox_if_not_responding(120)

Leave a Reply