У меня есть пара веб-сервисов python, которые я пытаюсь запустить на Fedora 15. Их запускает пастер, и единственная разница в их запуске - это файл конфигурации, который они читают.
Кажется, это хорошо подходит для экземпляров сервисов systemd, но я бы хотел иметь возможность управлять ими как единым целым. Целевой объект systemd, для которого требуются обе службы, кажется подходящим вариантом. Запуск цели запускает обе службы, но остановка цели оставляет их работающими.
Вот служебный файл:
[Unit]
Description=AUI Instance on Port %i
After=syslog.target
[Service]
WorkingDirectory=/usr/local/share/aui
ExecStart=/opt/cogo/bin/paster serve --log-file=/var/log/aui/%i deploy-%i.ini
Restart=always
RestartSec=2
User=aui
Group=aui
[Install]
WantedBy=multi-user.target
А вот и целевой файл:
[Unit]
Description=AUI
Requires=aui@5001.service
Requires=aui@5002.service
After=syslog.target
[Install]
WantedBy=multi-user.target
Возможна ли такая группировка с помощью systemd?
Посмотрите на использование BindsTo
возможность связать блоки вместе. В systemd.unit(5)
справочная страница описывает это так:
BindsTo =
Настраивает зависимости требований, очень похожие по стилю на Requires =, однако в дополнение к этому поведению он также объявляет, что этот модуль останавливается, когда любой из перечисленных модулей внезапно исчезает. Модули могут внезапно, неожиданно исчезнуть, если служба завершается по своему выбору, устройство отключено или точка монтирования отключена без участия systemd.
Похоже, он должен делать то, что вы хотите, и связывать одно устройство с другим, чтобы всякий раз, когда ведущий останавливает, ведомый также останавливался, и наоборот для запуска.
Не забывайте, что вы также можете использовать Before
/After
чтобы указать порядок, в котором они должны запускаться при необходимости.