python как убить процесс на linux

использую следующий код

p = subprocess.Popen(['node', 'index.js'])
while(True):
    time.sleep(10)
 
    if psutil.pid_exists(p.pid) == False:
        p = subprocess.Popen(['node', 'index.js'])
        time.sleep(5)
    else:
        p.kill()

Как вы можете видеть он запускает node скрипт и если процесс умирает он поднимает его заново.

На windows данный скрипт работает отлично, но на Linux наблюдаются проблемы: psutil.pid_exists(p.pid) всегда выводит true, он либо не может убить процесс, либо не правильно определяет.

В чем проблема, как написать данный скрипт под linux ?


Ответы (1 шт):

Автор решения: Андрей Птицев

Проверять процесс через p.poll()

poll = p.poll()
if poll == None:
  # p.subprocess is alive
→ Ссылка