Как проверить в 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.