Como dice, envía la señal a todos los miembros del grupo de proceso de la persona que llama.
Los grupos de procesos se utilizan para implementar el control de trabajos en el shell (se pueden usar para otras cosas, pero el control interactivo del trabajo del shell es la razón principal de su existencia).
Notarás que cuando escribes Ctrl-C, todos los procesos de los trabajos actuales se eliminan, no solo el que los inició. Además, eso no mata los trabajos en segundo plano.
Eso se logra con los grupos de procesos. Un trabajo es un grupo de procesos iniciados por un shell que el shell puede poner en segundo plano o en primer plano (establecido como el grupo de proceso en primer plano del terminal o no), y matar como un todo.
Puede averiguar sobre los identificadores de grupo de proceso y los identificadores de sesión con ps -j( jpara Jcontrol ob).
Para eliminar el grupo de proceso de PGID $x, debe hacer lo siguiente:
kill -- "-$x"
kill 0 mata al grupo de procesos de la persona que llama.
Tenga en cuenta que si lo hace: /bin/kill 0el shell iniciará un nuevo trabajo para ejecutar ese killcomando, por killlo que solo se suicidará.
killSin embargo, generalmente es un shell incorporado, por killlo que matará al grupo de procesos del shell.
Sin embargo, cuando el shell es interactivo, es el proceso que gestiona los grupos de procesos, por lo que normalmente no hay otro proceso en el grupo de procesos del shell. Todos los procesos iniciados por el shell están en otros grupos de procesos:
$ 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
Arriba, sleepy psestán en dos grupos de procesos diferentes, uno en segundo plano, uno en primer plano y son diferentes del grupo de proceso del shell.
Sin embargo, podrías hacer:
(man kill & sleep 1; ps -j; kill 0)
El shell interactivo comenzaría un nuevo grupo de procesos para ese subshell, y tanto el subshell como el man (y los otros comandos iniciados por man como su buscapersonas, groff ...) estarían en el mismo grupo de procesos, por kill 0lo que funcionaría allí. (lo sleepanterior es dar tiempo suficiente para que se inicie el buscapersonas para que podamos verlo en la ps -jsalida antes de matarlo).
SIGTERMal proceso, lo que ha hecho. Elmancomando ha elegido ignorarlo.