GNU/Linux >> Tutoriels Linux >  >> Linux

Systemd :Utiliser à la fois After et Requires

Bien que la réponse d'Umut soit correcte, il existe une interaction entre Requires= et After= qui est rarement précisé. De systemd.unit#Requires=(c'est moi qui souligne) :

Si cette unité est activée, les unités listées seront également activées. Si l'une des autres unités ne parvient pas à s'activer, et une dépendance de commande After= sur l'unité défaillante est défini , cette unité ne démarrera pas.

Essentiellement, cela signifie que sans After= , les deux services seront démarrés si foo.service est lancé (à cause de Requires= ), mais systemd n'arrêtera pas foo.service si bar.service ne démarre pas correctement.

Cependant, avec l'ajout de After= , il attendra bar.service démarrer avec succès (à quelques exceptions près ; voir la note dans le Requires= docs) avant qu'il ne commence foo.service et ne le démarrera pas si bar.service ne démarre pas.

La différence entre Requires= est quelque peu liée et BindsTo= (voir les docs autour du lien ci-dessus).


Il est parfaitement correct d'utiliser à la fois After= et Requires= . Ils ont des objectifs différents. Requires= définit une dépendance de démarrage. systemd s'assure que si quelqu'un essaie de démarrer foo.service, il doit également démarrer bar.service. Si bar.service échoue à un moment donné, alors foo.service est également supprimé.

After= met un ordre de démarrage entre les services. Si les deux services doivent démarrer, alors After= s'assure que l'ordre de démarrage est défini.

Vous pouvez consulter le propre fichier de service de systemd à titre d'exemple.

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

Linux
  1. Gérer le démarrage à l'aide de systemd

  2. Commencez à utiliser systemd comme outil de dépannage

  3. Services de démarrage, d'arrêt et de redémarrage sur le serveur systemd RHEL 7 Linux

  4. Pourquoi Systemd arrête-t-il le service immédiatement après son démarrage ?

  5. Debian - Systemd :le service ne dispose pas des paramètres Execstart=et Execstop=. Refusant?

Comment j'ai appris à arrêter de m'inquiéter et à aimer systemd

Utiliser les fonctionnalités de systemd pour sécuriser les services

Comment configurer l'exécution automatique d'un script Python à l'aide de Systemd

Fichier d'unité Systemd - WantedBy et après

Upstart :démarrer le service après un processus non-upstart

Dépendances systemd et ordre de démarrage