简体   繁体   中英

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

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

Here's a little python script that starts a process, checks if it is running, waits a while, kills it, waits for it to terminate, then checks again. It uses the 'kill' command. Version 2.6 of python subprocess has a kill function. This was written on 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()

The timed output shows that it was terminated after about 3 seconds, and not 60 as the call to sleep suggests.

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

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

Have a look at the subprocess module. You can also use low-level primitives like fork() via the os module.

A simple function that uses subprocess module:

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

If you need to interact with the sub process at all, I recommend the pexpect module ( link text ). You can send input to the process, receive (or "expect") output in return, and you can close the process (with force=True to send SIGKILL).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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