如果Windows进程在服务停止时正在运行,如何检查Python?

如果Windows进程在服务停止时正在运行,如何检查Python?

问题描述:

某些Windows进程在服务停止后会继续运行几分钟。有没有一种方法在Python中检测?如果Windows进程在服务停止时正在运行,如何检查Python?

import os 

def getTasks(name): 
r = os.popen('tasklist /v').read().strip().split('\n') 
print ('# of tasks is %s' % (len(r))) 
for i in range(len(r)): 
    s = r[i] 
    if name in r[i]: 
     print ('%s in r[i]' %(name)) 
     return r[i] 
return [] 

if __name__ == '__main__': 
''' 
This code checks tasklist, and will print the status of a code 
''' 

    imgName = 'dwm.exe' 

    notResponding = 'Not Responding' 

    r = getTasks(imgName) 

if not r: 
    print('%s - No such process' % (imgName)) 

elif 'Not Responding' in r: 
    print('%s is Not responding' % (imgName)) 

else: 
    print('%s is Running or Unknown' % (imgName)) 

Source

重要提示!正如本教程的作者所述,他使用的平台是Windows Server 2012,但该代码很可能与其他Windows产品协同工作。至少它应该给你和想法如何去做你想要的。

希望它的帮助!

你可以尝试psutil包,特别是psutil.process_iter()(返回了正在运行的进程的迭代器)。该软件包用于其他分析器软件包。处理功能的文档可以在here找到。

我不知道你将如何找到进程标识有问题的服务(S),如果他们不在父/子PID关系明显。我没有在Windows上测试过。