Как проверить в Python, запущен ли процесс Windows, когда его служба остановлена?

Некоторые процессы Windows продолжают работать в течение нескольких минут после остановки их службы. Есть ли способ в Python, чтобы обнаружить это?

2 ответа

Решение
import os

def getTasks(name):
r = os.popen('tasklist /v').read().strip().split('\n')
print ('# of tasks is %s' % (len(r)))
for i in range(len(r)):
    s = r[i]
    if name in r[i]:
        print ('%s in r[i]' %(name))
        return r[i]
return []

if __name__ == '__main__':
'''
This code checks tasklist, and will print the status of a code
'''

     imgName = 'dwm.exe'

     notResponding = 'Not Responding'

     r = getTasks(imgName)

if not r:
    print('%s - No such process' % (imgName)) 

elif 'Not Responding' in r:
    print('%s is Not responding' % (imgName))

else:
    print('%s is Running or Unknown' % (imgName))

Источник

Важная заметка!!! Как заявил автор учебника, используемой платформой была Windows Server 2012, но этот код, скорее всего, работает с другими продуктами Windows. По крайней мере, это должно дать вам и идею о том, как делать то, что вы хотите.

Надеюсь, это поможет!

Вы можете попробовать psutil пакет и в частности psutil.process_iter() (возвращает итератор для запущенных процессов). Этот пакет используется в других пакетах профилировщика. Документацию по функциям процесса можно найти здесь.

Я не знаю, как вы могли бы найти идентификаторы процессов для рассматриваемых служб, если они не проявляются в отношениях pid родитель / потомок. Я не проверял это на Windows.

Другие вопросы по тегам