有没有办法用python启动/停止linux进程?

问题描述:

我希望能够启动一个进程,然后能够将其杀死之后有没有办法用python启动/停止linux进程?

看看subprocess模块。 您也可以通过os模块使用低级基元,如fork()

使用子模块的简单函数:

def CMD(cmd) : 
    p = subprocess.Popen(cmd, shell=True, 
         stdin=subprocess.PIPE, 
         stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE, 
         close_fds=False) 
    return (p.stdin, p.stdout, p.stderr) 

看到原始的fork()和模块subprocessmultiprocessing文档,multithreading

如果您需要与子相互作用过程中,我推荐pexpect模块(link text)。您可以向流程发送输入,接收(或“期望”)输出,您可以关闭流程(使用force = True发送SIGKILL)。

这是一个小小的python脚本,它启动一个进程,检查它是否正在运行,等待一段时间,杀死它,等待它终止,然后再次检查。它使用'kill'命令。 python子进程的版本2.6有一个kill函数。这是写在2.5。

import subprocess 
import time 

proc = subprocess.Popen(["sleep", "60"], shell=False) 
print 'poll =', proc.poll(), '("None" means process not terminated yet)' 
time.sleep(3) 
subprocess.call(["kill", "-9", "%d" % proc.pid]) 
proc.wait() 
print 'poll =', proc.poll() 

定时输出显示它在大约3秒后终止,而不是60表示睡眠呼叫提示。

$ time python prockill.py 
poll = None ("None" means process not terminated yet) 
poll = -9 

real 0m3.082s 
user 0m0.055s 
sys 0m0.029s 
+1

您可以用'os.kill(..)'杀掉进程 – 2015-03-11 16:00:53

+1

甚至'proc.terminate()'或'proc.kill()'因为Python 2.6 – 2015-03-11 16:27:59