GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il processo figlio è ancora vivo dopo che il processo genitore è stato ucciso in Linux?

No, quando uccidi un processo da solo, non ucciderà i bambini.

Devi inviare il segnale al process group se vuoi che tutti i processi di un dato gruppo ricevano il segnale

Ad esempio, se l'id del tuo processo genitore ha il codice 1234, dovrai specificare il parentpid aggiungendo il simbolo meno seguito dall'id del tuo processo genitore:

kill -9 -1234

Altrimenti, gli orfani saranno collegati a init , come mostrato dal tuo terzo screenshot (il PPID del bambino è diventato 1).


-bash:kill:(-123) - Nessun processo simile

In una sessione interattiva di Terminal.app, il numero di ID del gruppo di processi in primo piano e il numero di ID del gruppo di processi in background sono diversi in base alla progettazione quando è abilitata la modalità di controllo/monitoraggio del processo. In altre parole, se esegui lo sfondo di un comando in una sessione Terminal.app abilitata al controllo dei processi, il $! pid del processo in background è in realtà un nuovo numero id del gruppo di processi (pgid).

In uno script che non ha il controllo del lavoro abilitato, tuttavia, questo potrebbe non essere il caso! Il pid del processo in background potrebbe non essere un nuovo pgid ma un normale pid! E questo è ciò che causa il messaggio di errore -bash: kill: (-123) - No such process , tentando di uccidere un gruppo di processi ma specificando solo un normale pid (invece di un pgid) al kill comando.

# the following code works in Terminal.app because $! == $pgid
{
sleep 100 &
IFS=" " read -r pgid <<EOF
$(ps -p $! -o pgid=)
EOF
echo $$ $! $pgid
sleep 10
kill -HUP -- -$!
#kill -HUP --  -${pgid}  # use in script
}

Linux
  1. Linux – Quando non dovrei uccidere -9 Un processo?

  2. Perché Sigint non viene propagato al processo figlio quando viene inviato al processo padre?

  3. kill Esempi di comandi in Linux

  4. Trovare quale processo è stato ucciso da Linux OOM killer

  5. Cosa ha ucciso il mio processo e perché?

Come uccidere un processo in Linux

Kill Command in Linux

Come uccidere i processi Zombie in Linux

5 modi rapidi per uccidere un processo in Linux

Come KILL un processo su Linux

Come uccidere il processo di zombi