Taskkill через LogMeIn
Я использую задачу LogMeIn OneToMany для развертывания обновления на некоторых компьютерах, на которых запущено мое приложение. У меня есть процесс Python, который порождает дочерний.exe. Он запускается как "python.exe" (как указано в списке задач) и имеет название "Администратор: AppRunner".
Я не могу убить python.exe, потому что есть другие запущенные скрипты, которые я не хочу умирать. Итак, я пытаюсь убить на основе названия названия. Ниже работает локально, но не работает при выполнении через logmein:
os.system('taskkill /f /t /fi "WindowTitle eq Administrator: AppRunner"')
У меня есть другие задачи, которые убивают другие исполняемые файлы, и они прекрасно работают, например:
os.system('taskkill /f /im program.exe')
Есть ли что-то очевидное, чего мне не хватает, или кто-то может помочь мне с методом отладки чего-то подобного, чтобы я мог разобраться в проблеме?
1 ответ
Как вы уже заметили, со страниц справки Microsoft для taskkill
:
Фильтры WINDOWTITLE и STATUS не поддерживаются, если указана удаленная система.
Вместо этого вы можете заставить свой дочерний процесс написать PID-файл:
import os
pid = os.getpid()
with open('c:\\temp\\myapp.pid','w') as pidfile:
pidfile.write(str(pid))
И затем, когда вы хотите завершить процесс, получите PID из файла и уничтожьте его, используя /PID
включи тасккилл. Предполагая, что вы прочитали PID в переменную mypid
:
os.system('taskkill /PID {} /f'.format(mypid))