繁体   English   中英

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

[英]is there a way to start/stop linux processes with python?

我希望能够启动一个过程,然后在之后将其杀死

这是一个小的python脚本,用于启动进程,检查其是否正在运行,等待一会,杀死它,等待其终止,然后再次检查。 它使用“ kill”命令。 python子进程的2.6版具有终止功能。 这写在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

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()和模块子进程多处理多线程

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM