在python脚本中杀死进程及其子进程

时间:2015-12-17 10:09:29

标签: python subprocess kill-process

在我的脚本中我得到一个进程ID(父/主)

对于那个主进程id 3-4在linux终端中运行了几个子进程

我的要求来自该processid也会杀死所有子进程和子进程。

我试过了

 import os
 pid = parent process id
 from  subprocess import call
 call(["pkill", "-TERM","-P", str(pid)])

但没有成功。

也试过

 os.system('kill -9 ' + pid)  # only parent is getting killed subpid are still running.

请建议像他们的主进程id列出所有子进程。然后在循环中如何杀死那些然后是父进程。

kill process and its sub/co-processes by getting their parent pid by python script

可悲的是,这对我的情况没有帮助。

1 个答案:

答案 0 :(得分:0)

使用psutil来做到这一点。

import signal
import psutil

def kill(ppid, signal=signal.SIGTERM):
    try:
      process = psutil.Process(ppid)
    except psutil.NoSuchProcess:
      return
    pids = process.get_children(recursive=True)
    for pid in pids:
      os.kill(pid.pid, signal)