Come dice, invia il segnale a tutti i membri del gruppo di processi del chiamante.
I gruppi di processi vengono utilizzati per implementare il controllo dei processi nella shell (possono essere utilizzati per altre cose, ma il controllo interattivo dei processi della shell è la ragione principale della loro esistenza).
Noterai che quando digiti Ctrl-C, tutti i processi dei lavori correnti vengono eliminati, non solo quello che li ha avviati. Inoltre, ciò non uccide i processi in background.
Ciò si ottiene con i gruppi di processi. Un lavoro è un gruppo di processi avviati da una shell che la shell può mettere in background o in primo piano (impostata come gruppo di processi in primo piano del terminale o meno) e uccidere nel suo insieme.
È possibile scoprire gli ID dei gruppi di processo e gli ID di sessione con ps -j( jper il Jcontrollo ob).
Per eliminare il gruppo di processi di PGID $x, eseguire:
kill -- "-$x"
kill 0 uccide il gruppo di processi del chiamante.
Nota che se lo fai: /bin/kill 0la shell avvierà un nuovo lavoro per eseguire quel killcomando, quindi killsi ucciderà solo.
killdi solito è una shell incorporata, quindi killucciderà il gruppo di processi della shell.
Tuttavia, quando la shell è interattiva, è il processo che gestisce i gruppi di processi, quindi in genere non vi sono altri processi nel gruppo di processi della shell. Tutti i processi avviati dalla shell sono in altri gruppi di processi:
$ sleep 1000 &
[1] 22746
$ ps -j
PID PGID SID TTY TIME CMD
22735 22735 22735 pts/23 00:00:00 zsh
22746 22746 22735 pts/23 00:00:00 sleep
22749 22749 22735 pts/23 00:00:00 ps
Sopra, sleepe pssono in due diversi gruppi di processi, uno in background, uno in primo piano e sono diversi dal gruppo di processi della shell.
Puoi fare comunque:
(man kill & sleep 1; ps -j; kill 0)
La shell interattiva avvierebbe un nuovo gruppo di processi per quella subshell e sia la subshell che man (e gli altri comandi avviati da man come il tuo cercapersone, groff ...) sarebbero nello stesso gruppo di processi, quindi kill 0funzionerebbe lì. (quanto sleepsopra è di dare abbastanza tempo per l'avvio del cercapersone in modo che possiamo vederlo ps -jnell'output prima di ucciderlo).
SIGTERMal processo, che ha fatto. Ilmancomando ha scelto di ignorarlo.