从python启动和停止外部进程

时间:2015-08-14 12:56:32

标签: python linux subprocess external-process

有没有办法从python启动和停止进程?我正在谈论一个持续的过程,我在正常运行时用ctrl + z停止。我想开始这个过程,等待一段时间再杀掉它。我正在使用linux。

this question与我的不一样,因为在那里,用户只需要运行该过程。我需要运行它并停止它。

3 个答案:

答案 0 :(得分:3)

  

我想开始这个过程,等待一段时间再杀掉它。

#!/usr/bin/env python3
import subprocess

try:
    subprocess.check_call(['command', 'arg 1', 'arg 2'],
                          timeout=some_time_in_seconds)
except subprocess.TimeoutExpired: 
    print('subprocess has been killed on timeout')
else:
    print('subprocess has exited before timeout')

请参阅Using module 'subprocess' with timeout

答案 1 :(得分:1)

也许您可以使用Process模块:

app.locals

答案 2 :(得分:1)

您可以使用os.kill功能发送-SIGSTOP( - 19)和-SIGCONT( - 18)

示例(未验证):

import signal
from subprocess import check_output

def get_pid(name):
    return check_output(["pidof",name])

def stop_process(name):
    pid = get_pid(name)
    os.kill(pid, signal.SIGSTOP)

def restart_process(name):
    pid = get_pid(name)
    os.kill(pid, signal.SIGCONT)