在我的脚本中我得到一个进程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
可悲的是,这对我的情况没有帮助。
答案 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)