Como você diz ao systemd que um alvo está satisfeito com um dos requisitos?

Como você diz ao systemd que um alvo está satisfeito com um dos requisitos?

Como saber systemdse um requisito foi satisfeito com qualquer instância de uma lista de instâncias?

Digamos que eu tenha um destino chamado main_target.targete um modelo de serviço chamado [email protected]. Durante a operação normal, as únicas instâncias [email protected]existentes são:

  • serv@ex1
  • serv@ex2
  • serv@ex3

Apenasumdessas instâncias existem em um determinado momento, e quero dizer main_target.targetque é satisfeito sempre quequalquerdas três instâncias existem.

Intuitivamente, gostaria de algo semelhante à require_anytag do SMF, mas não consegui encontrar nada parecido em nenhuma systemddocumentação.

Nota 1: sei que posso fazer serv@ex1, serv@ex2, serv@ex3e mutuamente exclusivos com a Conflicts=diretiva.

Nota 2: Também sei que posso usar as diretivas Before=e After=para hierarquizar as três instâncias para iniciar em uma determinada ordem.

Responder1

Como você mencionou, você pode tornar os serviços mutuamente exclusivos com a Conflicts=diretiva. Os systemdalvos são apenas um método para agrupar unidades, não possuem opções de dependência complexas.

systemd.target

Um arquivo de configuração de unidade cujo nome termina em ".target" codifica informações sobre uma unidade alvo do systemd, que é usada para agrupar unidades e como pontos de sincronização conhecidos durante a inicialização.

Este tipo de unidade não possui opções específicas. Consulte systemd.unit(5) para obter as opções comuns de todos os arquivos de configuração da unidade. Os itens de configuração comuns são configurados nas seções genéricas [Unit] e [Install]. Não existe uma seção [Target] separada, pois nenhuma opção específica do destino pode ser configurada.

unidade do sistemapara referência.

Você só pode usar diretivas incluídas em systemd.unite não inclui um método para iniciar apenas um dos vários serviços.

informação relacionada