GNU/Linux >> Znalost Linux >  >> Linux

Nelze odpojit podřízený proces, když je hlavní proces spuštěn ze systemd

Řešením je přidat

KillMode=process

do servisního bloku. Výchozí hodnota je control-group což znamená, že systemd vyčistí všechny podřízené procesy.

Z man systemd.kill

KillMode=Určuje, jak budou procesy této jednotky zabity. Jedna z kontrolní skupiny, procesní, smíšená, žádná.

Pokud je nastaveno na control-group, všechny zbývající procesy v řídicí skupině této jednotky budou při zastavení jednotky ukončeny (pro služby:po provedení příkazu stop, jak je nakonfigurováno pomocí ExecStop=). Pokud je nastaveno na proces, bude ukončen pouze samotný hlavní proces. Je-li nastaven na smíšený, signál SIGTERM (viz níže) je odeslán do hlavního procesu, zatímco následný signál SIGKILL (viz níže) je odeslán všem zbývajícím procesům řídicí skupiny jednotky. Pokud je nastaveno na žádné, žádný proces nebude ukončen. V tomto případě bude při zastavení jednotky proveden pouze příkaz stop, ale jinak nebude ukončen žádný proces. Procesy, které po zastavení zůstaly živé, jsou ponechány ve své kontrolní skupině a kontrolní skupina po zastavení nadále existuje, pokud není prázdná.


Linux
  1. Zastavit/ukončit proces z příkazového řádku po určité době?

  2. Jak získat návratovou hodnotu z CHILD PROCESS?

  3. Jak získat podřízený proces z rodičovského procesu

  1. Jak zastavit službu systemd

  2. Je možné vynutit určitý výstupní kód při použití kill k zastavení procesu?

  3. Jak mohu číst vstup z klávesnice hostitelů při připojení přes SSH?

  1. Mohu slepě věřit 127.0.0.1?

  2. Mohu obnovit nano proces z předchozího terminálu?

  3. Jak systemd řeší smrt dítěte řízeného procesu?