
¿Cómo se puede saber systemd
que un requisito se cumple con una de cualquier instancia de una lista de instancias?
Digamos que tengo un objetivo llamado main_target.target
y una plantilla de servicio llamada [email protected]
. Durante el funcionamiento normal, los únicos casos de [email protected]
esto que existen son:
serv@ex1
serv@ex2
serv@ex3
Solounode esas instancias existen en un momento dado, y quiero decir main_target.target
que se cumple siempre quecualquierde las tres instancias existen.
Intuitivamente, me gustaría algo similar a la require_any
etiqueta SMF, pero no he podido encontrar nada parecido en ninguna systemd
documentación.
Nota 1: sé que puedo hacer que , serv@ex1
y sean mutuamente excluyentes con la directiva.serv@ex2
serv@ex3
Conflicts=
Nota 2: También sé que puedo usar las directivas Before=
y After=
para organizar las tres instancias en niveles y comenzar en un orden determinado.
Respuesta1
Como usted menciona, puede hacer que los servicios sean mutuamente excluyentes con la Conflicts=
directiva. Los systemd
objetivos son sólo un método para agrupar unidades, no tienen opciones de dependencia complejas.
Un archivo de configuración de unidad cuyo nombre termina en ".target" codifica información sobre una unidad de destino de systemd, que se utiliza para agrupar unidades y como puntos de sincronización conocidos durante el inicio.
Este tipo de unidad no tiene opciones específicas. Consulte systemd.unit(5) para conocer las opciones comunes de todos los archivos de configuración de la unidad. Los elementos de configuración comunes se configuran en las secciones genéricas [Unidad] e [Instalación]. No existe una sección [Objetivo] separada, ya que no se pueden configurar opciones específicas del objetivo.
unidad.systemdpara referencia.
Solo puede usar directivas incluidas en systemd.unit
y no incluye un método para iniciar solo uno de varios servicios.