用Python监控进程?

时间:2010-07-09 17:54:01

标签: python process monitor restart

我认为这是一个非常基本的问题,但无论如何它都在这里。

我需要编写一个python脚本来检查以确保一个进程,例如notepad.exe正在运行。如果进程正在运行,则不执行任何操作。如果不是,请启动它。怎么做呢。

我在Windows XP上使用Python 2.6

3 个答案:

答案 0 :(得分:15)

os模块的进程创建函数在Python 2.6及更高版本中显然已被弃用,subprocess模块现在是首选模块,所以...

if 'notepad.exe' not in subprocess.Popen('tasklist', stdout=subprocess.PIPE).communicate()[0]:
    subprocess.Popen('notepad.exe')

请注意,在Python 3中,要检查的字符串需要是一个字节对象,所以它是

if b'notepad.exe' not in [blah]:
    subprocess.Popen('notepad.exe')

(要启动的文件/进程的名称不需要是字节对象。)

答案 1 :(得分:4)

有几个选项,

1:更粗糙但更明显的是对文字进行处理:

os.popen('tasklist').read()

2:更复杂的选择是使用pywin32并研究win32 API以确定正在运行的进程。

3:WMI(我刚才found this),以及here is a vbscript如何通过WMI查询机器进程的示例。

答案 2 :(得分:3)