GNU/Linux >> Tutoriales Linux >  >> Linux

Dependencias de Systemd y orden de arranque

Solución 1:

Usa systemctl edit smb.service para actualizar las dependencias.

After=dirsrv.target - Se asegurará de que smb.service se inicie después de dirsrv.target.

Para mayor solidez (que valdrá la pena si está jugando con estas cosas), también puede incluir algunos de los siguientes:

Requires=dirsrv.target - Active dirsrv.target cuando smb.service esté activado. Hará que smb.service falle si dirsrv.target falla.

Wants=dirsrv.target - Active dirsrv.target cuando smb.service esté activado. No hará que smb.service falle si dirsrv.target falla.

BindsTo=dirsrv.target - Si dirsrv.target está desactivado, desactive smb.service.

Fuente:http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-ui proporciona una GUI para systemd. Ofrece una buena vista del estado de systemd, pero aún tendrá que usar un editor de texto para modificar los archivos de la unidad.

Solución 2:

Haz dos cosas:

  1. Edite el /lib/systemd/system/smb.service unit, para especificar la dependencia. El [unit] la sección contiene un After= línea que especifica qué servicios/objetivos se deben alcanzar antes de este.

    After=syslog.target network.target nmb.service winbind.service
    

    Cámbialo por:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Informe esta dependencia a Fedora como un error, para que pueda incorporarse en versiones futuras.

Solución 3:

tal vez necesite cambiar o incluir una línea con el Requires directiva en el [Unit] sección del /usr/lib/systemd/system/smb.service archivo.

Requires=dirsrv.target

y

After=dirsrv.target

Solución 4:

Hay dos alternativas para modificar el archivo de servicio en /usr/lib/systemd/system (consulte el Ejemplo 2. Anulación de la configuración del proveedor):

  1. Copie el archivo a /etc/systemd/system y realizar las modificaciones en la copia. Este archivo anulará completamente el archivo en /usr/lib .

  2. Crea el archivo /etc/systemd/system/smb.service.d/local.conf . El contenido del archivo debe ser algo como el ejemplo a continuación. Esto anula selectivamente las opciones "Requiere" y "Después" en el archivo de servicio proporcionado por el proveedor.

Cada uno de estos (incluyendo la modificación del archivo en /usr/lib ) ofrece ventajas y desventajas. La mejor elección puede depender del servicio y la naturaleza de las modificaciones.

Si bien puede funcionar, no es suficiente agregar solo la opción "Después" (ver Opciones de la sección [Unidad]). "Después" controla el orden, pero no las dependencias. Si dirsrv.target no se inicia de otra forma, no se iniciará especificando una orden. El uso de la opción "Requiere" o "Quiere" forzará dirsrv.target para ser iniciado.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

NB:no sé si este enfoque estaba disponible cuando se hizo esta pregunta originalmente.


Linux
  1. 10 comandos prácticos de systemd:una referencia

  2. ¿Estado y dependencias del servicio de Solaris?

  3. ¿Por qué la mayoría de los ejemplos de Systemd contienen Wantedby=multi-user.target?

  4. Cómo detener el servicio systemd

  5. ¿Cómo ejecutar un script con systemd justo antes de apagar?

Comandos Systemctl para administrar el servicio Systemd

Instale y ejecute Jenkins con Systemd y Docker

Cómo aprendí a dejar de preocuparme y amar systemd

Administrar cgroups con systemd

Cómo contar la cantidad de archivos y subdirectorios dentro de un directorio

Hacer que el servicio de usuario de systemd dependa del objetivo del sistema