
Como saber systemd
se um requisito foi satisfeito com qualquer instância de uma lista de instâncias?
Digamos que eu tenha um destino chamado main_target.target
e 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.target
que é satisfeito sempre quequalquerdas três instâncias existem.
Intuitivamente, gostaria de algo semelhante à require_any
tag do SMF, mas não consegui encontrar nada parecido em nenhuma systemd
documentação.
Nota 1: sei que posso fazer serv@ex1
, serv@ex2
, serv@ex3
e 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 systemd
alvos são apenas um método para agrupar unidades, não possuem opções de dependência complexas.
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.unit
e não inclui um método para iniciar apenas um dos vários serviços.