Возможно ли перезапустить несколько служб systemd с одной целью?

Возможно ли перезапустить несколько служб systemd с одной целью?

У меня много файлов единиц служб, которые мне нужно перезапустить, и я не хочу вводить их все. Возможно ли иметь одну цель или службу, которая ничего не знает о том, как запускать другие службы, но группирует их вместе, чтобы они все перезапускались одной командой?

Как мне записать файл модуля службы systemd или целевой файл, если я этого хочу systemctl restart one-to-rule-them-all?

Требования: 1. Цель uber хочет, чтобы было запущено много других служб. 2. Цель uber не должна ничего знать о том, как запустить эти службы.

Когда я попробовал это сделать, sudo systemctl restart one-to-rule.targetничего не произошло.

# /etc/systemd/system/one-to-rule.target
[Unit]
Description=One To Rule Them All
Requires=multi-user.target
Wants=program-api.service  program-gui.service yet-another.service
After=multi-user.target display-manager.service

[Install]
WantedBy=graphical.target

Каждый из этих блоков был включен, program-api.service program-gui.service yet-another.serviceи one-to-rule.targetвсе они, кажется, загружены и активны. Я могу загрузить машину, и все службы появляются именно так, как я хочу. Однако я просто хочу набрать текст systemctl restart one-to-rule.targetили что-то еще, вместо перезагрузки.

Графики зависимости выглядят так

$ systemctl list-dependencies one-to-rule.target
one-to-rule.target
● ├─program-api.service
● ├─program-gui.service
● ├─yet-another.service
● └─multi-user.target

$ systemctl list-dependencies --reverse one-to-rule.target
one-to-rule.target
● └─graphical.target

решение1

PartOf=one-to-rule.targetЭто может работать, но для того, чтобы на каждый из этих модулей .service распространялись перезапуски, он должен быть . (На самом деле это просто более слабая версия Requires=<…>.target.)

К сожалению, невозможно указать обратную зависимость (ConsistsOf) непосредственно в цели – необходимо расширить все служебные файлы.

Связанный контент