[ubuntu] systemd gestiona las dependencias entre los componentes y servicios del sistema

¿Cómo gestiona systemd las dependencias entre los componentes y servicios del sistema?

systemd usa unidades para definir los componentes y servicios del sistema, y ​​cada unidad tiene un archivo de configuración correspondiente, que define las propiedades y dependencias de la unidad.

systemd utiliza archivos de configuración para gestionar las dependencias entre servicios. Estos archivos de configuración generalmente se encuentran en /etc/systemd/system/el directorio o /usr/lib/systemd/system/directorio, dependiendo de la configuración del sistema.

A continuación se muestran algunas formas comunes en las que systemd gestiona las dependencias:

  1. Requisitos y deseos: puede especificar que una unidad dependa de otras unidades utilizando las palabras clave Requiresy en los archivos de configuración de la unidad . Indica una fuerte dependencia, es decir, la unidad dependiente debe iniciarse exitosamente antes de que se pueda iniciar la unidad actual. Indica una dependencia débil, es decir, no se requiere el inicio de la unidad dependiente, pero si la unidad dependiente está disponible, la unidad actual se iniciará primero.WantsRequiresWants

  2. Antes y Después: Con las palabras clave Beforey Afteres posible definir el orden de inicio entre unidades. Beforeindica que la unidad actual debe comenzar antes de la unidad especificada e Afterindica que la unidad actual debe comenzar después de la unidad especificada. Esto garantiza que los servicios se inicien en un orden predefinido durante el inicio.

  3. PartOf y RequiresMountsFor: PartOfPalabras clave utilizadas para definir que una unidad es parte de otra unidad, si la unidad maestra arranca o se detiene, las unidades esclavas arrancan o se detienen en consecuencia. RequiresMountsForpalabra clave utilizada para especificar el punto de montaje del sistema de archivos deseado para una unidad.

  4. OnFailure: utilizando OnFailurela palabra clave, puede definir una unidad para que se inicie solo cuando la unidad especificada no se inicia. Esto es útil para definir mecanismos de tolerancia a fallas y servicios de respaldo.

Con estas configuraciones de dependencia, systemd garantiza que los servicios se inicien y detengan en el orden correcto durante el inicio y la administración. La definición de dependencias también puede garantizar que un servicio se inicie solo cuando otros servicios de los que depende estén disponibles, mejorando así la confiabilidad y estabilidad del sistema.

Puede utilizar systemctllos comandos para ver y administrar unidades y sus dependencias. Por ejemplo, systemctl status <unit>se puede ver el estado y las dependencias de una unidad, systemctl enable <unit>se puede habilitar una unidad, systemctl start <unit>se puede iniciar una unidad, etc.

Tenga en cuenta que para administrar y configurar correctamente las dependencias, se recomienda leer atentamente la documentación de systemd y comprender el significado de las propiedades y palabras clave de cada unidad.

ejemplo

Aquí hay un ejemplo usando Requires, Wantsy Before:After

Supongamos que tenemos dos servicios: serviceA.servicey serviceB.service. serviceA.serviceDebe serviceB.serviceiniciarse antes de comenzar y serviceB.serviceno depende de otros servicios.

serviceA.serviceEl contenido del archivo de configuración es el siguiente:

[Unit]
Description=Service A
Requires=serviceB.service
After=serviceB.service

[Service]
ExecStart=/path/to/serviceA

serviceB.serviceEl contenido del archivo de configuración es el siguiente:

[Unit]
Description=Service B

[Service]
ExecStart=/path/to/serviceB

En este ejemplo, serviceA.serviceen el archivo de configuración Requires=serviceB.serviceindica serviceA.serviceque depende de serviceB.servicey After=serviceB.serviceespecifica que serviceA.servicedebe serviceB.serviceiniciarse después. De esta manera, al iniciar serviceA.service, systemd se iniciará automáticamente serviceB.servicey asegúrese de iniciar serviceB.serviceantes serviceA.service.

Tenga en cuenta que los ejemplos anteriores son solo para fines de demostración; los archivos de configuración reales pueden requerir más opciones y configuraciones, según las necesidades y la complejidad del servicio.

ejemplo oficial

Utilice la línea de comando para ver la configuración del servicio existente en el sistema operativoacpid.service

xzbd@ubuntu:~$ cat /usr/lib/systemd/system/acpid.service 
[Unit]
Description=ACPI event daemon
Requires=acpid.socket
ConditionVirtualization=!container
Documentation=man:acpid(8)

[Service]
StandardInput=socket
EnvironmentFile=/etc/default/acpid
ExecStart=/usr/sbin/acpid $OPTIONS

[Install]
WantedBy=multi-user.target


Supongo que te gusta

Origin blog.csdn.net/m0_47406832/article/details/132471447
Recomendado
Clasificación