Как сообщить systemd, что цель удовлетворена хотя бы одному из требований?

Как сообщить systemd, что цель удовлетворена хотя бы одному из требований?

Как определить 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Цели — это всего лишь метод группировки единиц, у них нет сложных опций зависимости.

systemd.цель

Файл конфигурации юнита, имя которого заканчивается на «.target», кодирует информацию о целевом юните systemd, который используется для группировки юнитов и в качестве известных точек синхронизации во время запуска.

У этого типа юнита нет определенных параметров. См. systemd.unit(5) для общих параметров всех файлов конфигурации юнита. Общие элементы конфигурации настраиваются в общих разделах [Unit] и [Install]. Отдельного раздела [Target] не существует, поскольку нельзя настроить параметры, специфичные для цели.

systemd.единицадля справки.

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

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