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

时间:2009-09-04 12:38:06

标签: python linux

我希望能够开始一个过程然后能够杀死它

6 个答案:

答案 0 :(得分:14)

这是一个小的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 :(得分:8)

查看subprocess模块。 您还可以通过fork()模块使用os等低级原语。

答案 2 :(得分:3)

答案 3 :(得分:3)

使用子进程模块的简单函数:

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)

答案 4 :(得分:0)

查看原始fork()和模块subprocessmultiprocessingmultithreading

的文档

答案 5 :(得分:0)

如果您需要与子流程进行交互,我建议使用pexpect模块(link text)。您可以将输入发送到进程,接收(或“期望”)输出作为回报,您可以关闭进程(使用force = True发送SIGKILL)。