GNU/Linux >> Tutoriels Linux >  >> Linux

Impossible de détacher le processus enfant lorsque le processus principal est démarré à partir de systemd

La solution est d'ajouter

KillMode=process

au bloc de service. La valeur par défaut est control-group ce qui signifie que systemd nettoie tous les processus enfants.

De man systemd.kill

KillMode=Spécifie comment les processus de cette unité doivent être tués. L'un des groupes de contrôle, processus, mixte, aucun.

S'il est défini sur groupe de contrôle, tous les processus restants dans le groupe de contrôle de cette unité seront tués à l'arrêt de l'unité (pour les services :après l'exécution de la commande d'arrêt, comme configuré avec ExecStop=). S'il est défini sur process, seul le processus principal lui-même est tué. S'il est réglé sur mixte, le signal SIGTERM (voir ci-dessous) est envoyé au processus principal tandis que le signal SIGKILL suivant (voir ci-dessous) est envoyé à tous les processus restants du groupe de contrôle de l'unité. S'il est défini sur aucun, aucun processus n'est tué. Dans ce cas, seule la commande d'arrêt sera exécutée à l'arrêt de l'unité, mais aucun processus ne sera tué autrement. Les processus restant actifs après l'arrêt sont laissés dans leur groupe de contrôle et le groupe de contrôle continue d'exister après l'arrêt à moins qu'il ne soit vide.


Linux
  1. Comment accélérer le processus de compilation lors de l'installation de packages à partir d'AUR

  2. Pourquoi Sigint n'est-il pas propagé au processus enfant lorsqu'il est envoyé à son processus parent ?

  3. Comment obtenir la valeur de retour de CHILD PROCESS ?

  4. Comment obtenir le PID d'un processus enfant forké dans un script shell

  5. Puis-je démarrer Linux à partir d'un VHD ?

Le processus enfant reçoit le SIGINT du parent

Comment obtenir un processus enfant à partir d'un processus parent

Comment arrêter le service systemd

Est-il possible d'appliquer un certain code de sortie lors de l'utilisation de kill pour arrêter un processus ?

Quand ne dois-je pas tuer -9 un processus ?

Comment systemd gère-t-il la mort d'un enfant d'un processus géré ?