Sé systemctl enable iptables
es similar al comando chkconfig --level 5 iptables on
, pero ambos no son exactamente iguales.
Usando systemctl
, ¿cómo restringimos un servicio para que se inicie solo en un objetivo determinado como graphical.target?
Respuesta aceptada:
Eso es lo que WantedBy=
y RequiredBy=
directivas en systemd
los archivos unitarios son para:
De man systemd.unit
:
Buscado por=, Requerido por=
Esta opción se puede usar más de una vez, o se puede dar una lista de nombres de unidades separados por espacios. Se crea un enlace simbólico en el directorio .wants/ o .requires/ de cada una de las unidades enumeradas cuando systemctl enable instala esta unidad. Esto tiene el efecto de que se agrega una dependencia de tipo Wants=o Requires=de la unidad listada a la unidad actual. El resultado principal es que la unidad actual se iniciará cuando se inicie la unidad enumerada. Consulte la descripción de Wants=y Requires=en la sección [Unidad] para obtener más detalles.
Entonces, el enlace simbólico creado es lo que causa systemd
para iniciar la unidad dada cuando se inicia el objetivo/la unidad.
Entonces, por ejemplo:
[Install]
WantedBy=graphical.target
Haría que la unidad solo se iniciara cuando graphical.target
se ejecuta (si la unidad está habilitada).
Otro ejemplo:
[Install]
WantedBy=my-custom-target.target graphical.target
Haría que la unidad se iniciara cuando my-custom-target.target
o graphical.target
se ejecuta (si la unidad está habilitada).
Una última cosa a tener en cuenta, puede ser difícil restringir las cosas a un solo objetivo porque algunos objetivos dependen de otros. Por ejemplo, graphical.target
Requires=multi-user.target
, por lo que cuando graphical.target
se inician todas las unidades desde multi-user.target
también se inician. Solo tenga en cuenta que algunos objetivos se construyen encima de otros, y que los que se construyen encima obtendrán todo de los objetivos de los que dependen.