用Python监控进程?

Zac*_*own 5 python restart process monitor

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

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

我在Windows XP上使用Python 2.6

JAB*_*JAB 15

os在Python 2.6及更高版本中,模块的进程创建功能显然已被弃用,subprocess模块现在是首选模块,因此......

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

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

if b'notepad.exe' not in [blah]:
    subprocess.Popen('notepad.exe')
Run Code Online (Sandbox Code Playgroud)

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


and*_*ieb 4

有几个选择,

1:更粗略但显而易见的是对以下内容进行一些文本处理:

os.popen('tasklist').read()
Run Code Online (Sandbox Code Playgroud)

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

3:WMI(我刚刚发现这个),这里有一个vbscript示例,说明如何通过WMI查询机器上的进程。