GNU/Linux >> Znalost Linux >  >> Linux

Rozdíl mezi SIGKILL SIGTERM s ohledem na procesní strom

Nemůžete to ovládat signálem; pouze jeho nadřazený proces to může ovládat voláním waitpid() nebo nastavení obslužných rutin signálu pro SIGCHLD . Viz SIGCHLD a SA_NOCLDWAIT v sigaction(2) manuálovou stránku pro podrobnosti.

Také to, co se stane s podřízenými vlákny, závisí na verzi linuxového jádra. S vlákny POSIX 2.6 by zabití hlavního vlákna mělo způsobit, že ostatní vlákna budou čistě ukončena. S 2.4 LinuxThreads je každé vlákno vlastně samostatný proces a SIGKILL nedává kořenovému vláknu šanci říct ostatním, aby se vypnuli, zatímco SIGTERM ano.


Pokud zabijete kořenový proces (rodičovský proces), měli by se stát osiřelé děti, nikoli zombie děti. sirotčí děti se vytvoří, když zabijete rodiče procesu, a jádro udělá z init rodiče sirotků. init by měl počkat, dokud sirotek nezemře, a poté použít funkci wait k vyčištění.

Zombie děti jsou vytvořeny, když proces (nikoli jeho rodič) skončí a jeho rodič nepřevezme jeho výstupní stav z tabulky procesů.

Zní mi to, jako byste se báli opustit sirotky, protože podle definice, když zabijete rodičovský proces zombie, zemře samotné zombie dítě.

Chcete-li zabít své sirotky, použijte kill -9 , což je ekvivalent SIGKILL.

Zde je podrobnější návod pro zabíjení věcí na linuxu:http://riccomini.name/posts/linux/2012-09-25-kill-subprocesses-linux-bash/


Linux
  1. Rozdíl mezi přihlašovacím prostředím a nepřihlašovacím prostředím?

  2. Nový rodičovský proces, když rodičovský proces zemře?

  3. Jaký je rozdíl mezi Nepreemptivním, Preemptivním a Selektivním Preemptivním jádrem?

  1. Rozdíl mezi 2>&-, 2>/dev/null, |&, &>/dev/null A>/dev/null 2>&1?

  2. Jaký je rozdíl mezi Sudo Su – a Sudo Su –?

  3. Rozdíl mezi Eot a Eof?

  1. Rozdíl mezi [0-9], [[:digit:]] a D?

  2. Rozdíl mezi Kill, Pkill a Killall?

  3. Rozdíl mezi Snat a Masquerade?