GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra SIGKILL SIGTERM considerando l'albero dei processi

Non puoi controllarlo tramite segnale; solo il suo processo genitore può controllarlo, chiamando waitpid() o impostando i gestori di segnale per SIGCHLD . Vedi SIGCHLD e SA_NOCLDWAIT nel sigaction(2) manpage per i dettagli.

Inoltre, ciò che accade ai thread figlio dipende dalla versione del kernel Linux. Con i thread POSIX di 2.6, l'uccisione del thread principale dovrebbe causare l'uscita pulita degli altri thread. Con 2.4 LinuxThreads, ogni thread è in realtà un processo separato e SIGKILL non dà al thread principale la possibilità di dire agli altri di chiudere, mentre SIGTERM fa.


Se uccidi il processo root (processo genitore), questo dovrebbe rendere i bambini orfani, non i bambini zombi. I bambini orfani vengono creati quando uccidi il genitore di un processo e il kernel rende init il genitore degli orfani. init dovrebbe aspettare che orphan muoia, quindi usa wait per ripulirlo.

I figli zombie vengono creati quando un processo (non il suo genitore) termina e il suo genitore non riprende il suo stato di uscita dalla tabella dei processi.

Mi sembra che tu sia preoccupato di lasciare orfani perché per definizione, quando uccidi un processo genitore zombi, il bambino zombi stesso muore.

Per uccidere i tuoi orfani, usa kill -9 , che è l'equivalente SIGKILL.

Ecco un tutorial più approfondito per uccidere cose su Linux:http://riccomini.name/posts/linux/2012-09-25-kill-subprocesses-linux-bash/


Linux
  1. Nuovo processo genitore quando il processo genitore muore?

  2. Differenza tra 2>&-, 2>/dev/null, |&, &>/dev/null E>/dev/null 2>&1?

  3. Qual è la differenza tra Sudo Su – e Sudo Su –?

  4. Differenza tra Eot ed Eof?

  5. Differenza tra [0-9], [[:digit:]] e D?

Differenza tra apt e apt-get spiegato

Differenza tra shell di accesso e shell non di accesso?

La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

SIGTERM vs SIGKILL:qual è la differenza?

Differenza tra $HOME e '~' (tilde)?

Qual è la differenza tra kill , pkill e killall?