Убить скрипт, запущенный в Process через os.system ()

У меня есть скрипт Python, который запускает несколько процессов. Каждый процесс в основном просто вызывает скрипт оболочки:

from multiprocessing import Process
import os
import logging

def thread_method(n = 4):
    global logger
    command = "~/Scripts/run.sh " + str(n) + " >> /var/log/mylog.log"
    if (debug): logger.debug(command)
    os.system(command)

Я запускаю несколько таких потоков, которые предназначены для работы в фоновом режиме. Я хочу иметь тайм-аут в этих потоках, так что, если он превышает тайм-аут, они будут убиты:

t = []
for x in range(10):
    try:
        t.append(Process(target=thread_method, args=(x,) ) )
        t[-1].start()
    except Exception as e:
        logger.error("Error: unable to start thread")
        logger.error("Error message: " + str(e))
logger.info("Waiting up to 60 seconds to allow threads to finish")
t[0].join(60)
for n in range(len(t)):
    if t[n].is_alive():
    logger.info(str(n) + " is still alive after 60 seconds, forcibly terminating")
     t[n].terminate()

Проблема заключается в том, что вызов метода terminate () в потоках процесса не убивает запущенный скрипт run.sh - он продолжает работать в фоновом режиме, пока я не принудительно убью его из командной строки или не завершу внутренне. Есть ли способ завершить и уничтожить подоболочку, созданную os.system ()?

Ответы на вопрос(4)

Ваш ответ на вопрос