Рейтинг:0

Как обращаться с многопоточным, но независимым systemd.service

флаг in

У меня есть Java-приложение с 4 запущенными процессами (в Ubuntu 20.04LTS), см. рисунок ниже. Служба 1 запускается раньше 2+, служба 2 также запускает службы 3 и 4. Я настроил 1 и 2 как простые, и это работает.

сервисные зависимости, сервис 2 запускает сервис 3 и 4

Однако службы 3 и 4 можно остановить/перезапустить независимо от службы 2. Есть ли способ реализовать это в определении службы app-service4.service? я посмотрел на запись в блоге с описанием похожего случая, поэтому, исходя из этого, я думаю, что определение службы 3 и 4 с помощью службы 2 «PartOf» может быть способом, но как заставить службы 3 и 4 понять, что они уже запущены службой 2?

Ниже сервис2.сервис

[Ед. изм]
Описание=Сервис 2

После=service1.service

[Оказание услуг]   
ExecStart=/usr/local/bin/service2.sh запуск
ExecStop=/usr/local/bin/service2.sh остановить

[Установить]
WantedBy=default.target

После запуска статус службы показывает CGroup, как показано ниже (упрощенный pid, имена и т. д.)

/system.slice/service2.service
 |- 123 /bin/sh /usr/local/bin/service2.sh запуск
 |- 124 Java-сервис2
 |- 125 Java-сервис3
 |- 126 Java-сервис4

Итак, как мне добавить service3.service, который позволил бы мне отключить/перезапустить service3, не прерывая работу service2? Ниже моя попытка, которая не может понять, что service2 уже запущен.

[Ед. изм]
Описание=Сервис 3
PartOf=service2.service
    
[Оказание услуг]   
ExecStart=/usr/local/bin/service3.sh запуск
ExecStop=/usr/local/bin/service3.sh остановить

[Установить]
WantedBy=default.target

С этой настройкой после запуска службы 2 «служба состояния systemctl2» показывает процессы service2-servic4, как указано выше, а «служба состояния systemctl 3» отображается как «неактивная (мертвая)». Попытка запустить службу 3 (systemctl start service3) заканчивается остановкой того же самого (поскольку она уже была запущена, команда запуска завершается, после чего выполняется команда остановки). Если я повторю попытку запуска, она запустится как отдельная служба .

Я хотел бы, чтобы демон понимал, что процесс службы-2 на самом деле является службой-3, поэтому служба-3 будет отображаться как работающая. Это возможно? Если нет - есть ли обходной путь, позволяющий раздельно обрабатывать службы?

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

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