например из bash:
kill -9 -PID
os.kill(pid, signal.SIGKILL) уничтожить только родительский процесс.
os.kill(pid, signal.SIGKILL)
Когда вы передаете отрицательный PID kill, он фактически отправляет сигнал процессу group по этому (абсолютному) числу.Вы делаете эквивалент с os.killpg() в Python.
kill
os.killpg()
Если родительский процесс не является «группой процессов», но вы хотите уничтожить его с помощью детей, вы можете использовать psutil (https://pythonhosted.org/psutil/#processes). os.killpg не может идентифицировать pid группы, не являющейся процессом.
import psutil parent_pid = 30437 # my example parent = psutil.Process(parent_pid) for child in parent.children(recursive=True): # or parent.children() for recursive=False child.kill() parent.kill()
Другое решение, если ваш процесс не является группой процессов и вы не хотите использовать psutil , это запустить команду оболочки:
pkill -TERM -P 12345
Например, с
os.system('pkill -TERM -P {pid}'.format(pid=12345))
Вы должны использовать параметр сигнала 9 для уничтожения дерева процессов.root @ localhost: ~ $ python>>> импорт ОС>>> os.kill (pid, 9)если вам нужно использовать константу signal.SIGKILL, вы должны использовать os.killpg (pgid, signal.SIGKILL) для уничтожения дерева процессов.