Рейтинг:0

Когда я «останавливаю» системный процесс, процесс команды «ExecStart» не останавливается

флаг it

Я запускаю системную службу со следующей конфигурацией my_script.service:

[Ед. изм]
Description=Моя демонстрационная программа.

[Оказание услуг]
Пользователь=мое имя
ExecStart=/my_scripts/some_async_python_script.py
Перезапустить = всегда
Рестартсек=5с

[Установить]
WantedBy=многопользовательская.цель

Перед запуском я бы сделал это один раз: sudo systemctl демон-перезагрузка и sudo systemctl включить my_script.service и тогда я бы начал так: sudo systemctl запустить my_script.service

Пока это работает хорошо.

У меня проблема в том, что когда я останавливаю ее с помощью sudo systemctl остановить my_script.service а затем сделать хтоп Я вижу /my_scripts/some_async_python_script.py Все еще работает. Я вижу, что у него есть родительский процесс. Когда я убиваю дочерний процесс, он мертв (т.е. мне не нужно убивать родительский процесс).

Мой вопрос: почему моя сервисная команда все еще работает, хотя я остановил службу?

Michael Hampton avatar
флаг cz
Что необычного и неожиданного в этом Python-скрипте? например это разветвляется? Как он вообще получил дочерний процесс?
Newskooler avatar
флаг it
Сценарий python подключается к веб-сокету и передает данные асинхронно, и я подозреваю, что проблема именно в этом (но не совсем понимаю, почему). Сценарий использует такие библиотеки, как «из потока импорта aiostream» и «импорт сокета» и «из веб-сокетов импортировать соединение». Помогает ли эта информация вообще?
Newskooler avatar
флаг it
@MichaelHampton, есть ли еще какая-нибудь информация с моей стороны, с которой я могу помочь?
Michael Hampton avatar
флаг cz
Каково состояние службы после того, как вы попытались ее остановить? Что было в журнале?
Newskooler avatar
флаг it
Перед тем, как я «стоп», он говорит «Активен: активен (работает)», а после «стоп» говорит «Активен: неактивен (мертв)» (как и ожидалось). Основной PID действительно исчез (когда я делаю `htop`, я нигде его не вижу), однако я вижу другой запущенный PID, который является кодом внутри моей службы systemd. Тот, который мне нужно остановить вручную. Я не знаю, почему systemd не останавливает его.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.