Как остановить запуск Windows Python скрипт - PullRequest
0 голосов
/ 05 октября 2018

У меня есть скрипт на python под названием forever.py, который я запускаю через редактор локальной групповой политики Windows.Скрипт располагается в каталоге C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup.Вот этот сценарий:

import subprocess
from time import sleep
import logging.config

# Makes server_receiver.py run forever unless there is an error with this script

LOGGER_NAME = 'STARTUP_RECEIVER'
logging.config.fileConfig('C:\\Automation\\startup\\config\\startup_receiver.conf')
logger = logging.getLogger(LOGGER_NAME)


while True:
    p = subprocess.Popen(['python', r'C:\Automation\startup\hello.py'],
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = p.communicate()
    rc = p.returncode
    if rc != 0:
        logger.debug('{}'.format(error))
        sleep(5)
        continue
    else:
        logger.debug('Test Passed with return code {}'.format(rc))
        sleep(5)
        pass

Этот сценарий просто запускает другой сценарий Python под названием hello.py, который печатает hello.Поскольку этот сценарий начинается при запуске и запускается в фоновом режиме, мне было интересно, есть ли способ добавить что-либо в сценарий или в другой сценарий, который позволил бы мне уничтожить forever.py.Я думаю, что, поскольку этот скрипт работает в фоновом режиме, я не могу использовать argparse, чтобы добавить опцию, скажем, '-stop', которая убьет текущий pid.Единственное другое решение, которое приходит на ум, - убить этот скрипт другим скриптом, который я не уверен, как бы я это сделал.Я не верю, что есть другой способ получить pid другого запущенного скрипта, как в Linux.У кого-нибудь есть идеи, что я могу сделать здесь?Кроме того, могут быть некоторые проблемы с разрешениями, поскольку каталог сценариев запуска загружается в C: \ windows \ system32.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...