GNU/Linux >> Tutoriales Linux >  >> Linux

Systemd:Uso de After y Requires

Si bien la respuesta de Umut es correcta, existe una interacción entre Requires= y After= que rara vez se explica. De systemd.unit#Requires=(el énfasis es mío):

Si esta unidad se activa, las unidades enumeradas también se activarán. Si una de las otras unidades no se activa, y una dependencia de pedido After= en la unidad que falla está configurada , esta unidad no se iniciará.

Esencialmente, esto significa que sin After= , ambos servicios se iniciarán si foo.service se inicia (debido a Requires= ), pero systemd no detendrá foo.service si bar.service no se inicia correctamente.

Sin embargo, con el agregado After= , esperará a bar.service para iniciar con éxito (con algunas excepciones; consulte la nota en el Requires= docs) antes de que comience foo.service y no lo iniciará si bar.service no arranca.

Algo relacionado es la diferencia entre Requires= y BindsTo= (ver los documentos alrededor del enlace de arriba).


Está perfectamente bien usar ambos After= y Requires= . Tienen diferentes propósitos. Requires= establece una dependencia de inicio. systemd se asegura de que si alguien intenta iniciar foo.service, también debería iniciar bar.service. Si bar.service falla en algún momento, entonces foo.service también se elimina.

After= está poniendo un orden de inicio entre los servicios. Si ambos servicios están programados para comenzar, entonces After= se asegura de que el orden de inicio esté establecido.

Puede ver el propio archivo de servicio de systemd como ejemplo.

/lib/systemd/system/basic.target
[Unit]
...
Requires=sysinit.target
After=sysinit.target
...

Linux
  1. Centos:¿Systemd elimina el servicio inmediatamente después del inicio?

  2. ¿Por qué Systemd detiene el servicio inmediatamente después de iniciarlo?

  3. Debian – Systemd:el servicio carece de la configuración Execstart=y Execstop=. ¿Rechazar?

  4. ¿El servicio Systemd no iniciará Nodejs?

  5. Cómo iniciar un servicio systemd después del inicio de sesión del usuario y detenerlo antes de que el usuario cierre la sesión

Administrar el inicio usando systemd

Comience a usar systemd como una herramienta de solución de problemas

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

Uso de las funciones de systemd para proteger los servicios

Cómo configurar la ejecución automática de un script de Python usando Systemd

Dependencias de Systemd y orden de arranque