
Как определить systemd
, что требование удовлетворено одним из экземпляров из списка?
Допустим, у меня есть цель, называемая , main_target.target
и шаблон службы, называемый . Во время нормальной работы существуют [email protected]
только следующие экземпляры :[email protected]
serv@ex1
serv@ex2
serv@ex3
Толькоодиниз этих случаев существуют в любой момент времени, и я хочу сказать, main_target.target
что это выполняется всякий раз, когдалюбойиз трех случаев существуют.
Интуитивно мне хотелось бы чего-то похожего на тег SMF require_any
, но я не смог найти ничего подобного ни в одной systemd
документации.
Примечание 1: Я знаю, что могу сделать serv@ex1
, serv@ex2
, serv@ex3
и взаимоисключающими с Conflicts=
директивой.
Примечание 2: Я также знаю, что могу использовать директивы Before=
и After=
для объединения трех экземпляров в определенном порядке.
решение1
Как вы упомянули, вы можете сделать службы взаимоисключающими с помощью Conflicts=
директивы. systemd
Цели — это всего лишь метод группировки единиц, у них нет сложных опций зависимости.
Файл конфигурации юнита, имя которого заканчивается на «.target», кодирует информацию о целевом юните systemd, который используется для группировки юнитов и в качестве известных точек синхронизации во время запуска.
У этого типа юнита нет определенных параметров. См. systemd.unit(5) для общих параметров всех файлов конфигурации юнита. Общие элементы конфигурации настраиваются в общих разделах [Unit] и [Install]. Отдельного раздела [Target] не существует, поскольку нельзя настроить параметры, специфичные для цели.
systemd.единицадля справки.
Вы можете использовать только директивы, включенные в systemd.unit
, и он не включает метод для запуска только одной из нескольких служб.