En el man page, dice:
kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
pid... Specify the list of processes that kill should signal. Each pid can be one of five things:
0 All processes in the current process group are signaled
Y lo intenté así en bash:
$ man kill &
[1] 15247
$
[1]+ Stopped man kill
$ kill 0
$ ps
15247 pts/41 00:00:00 man
Aquí 0se usa como pid. Como entendí, kill 0matará todos los procesos en el proceso actual, que incluye pid15247. Sin embargo, no hizo nada en este ejemplo. ¿Alguien tiene ideas sobre cómo usarlo?
process
kill
process-groups
Arma de fuego
fuente
fuente

SIGTERMal proceso, lo que ha hecho. Elmancomando ha elegido ignorarlo.ps -jpara ver los grupos de procesos.kill -0(nota del guión), que es un tema diferente, en StackOverflow y aquí en Unix.SE .Respuestas:
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 0mata 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 esekillcomando, porkilllo que solo se suicidará.killSin embargo, generalmente es un shell incorporado, porkilllo 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:
Arriba,
sleepypsestá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:
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í. (losleepanterior es dar tiempo suficiente para que se inicie el buscapersonas para que podamos verlo en laps -jsalida antes de matarlo).fuente
kill -- -$xen realidad dicebash: kill: (-63531) - No such processen bash 5.0.11 (1) -lanzamiento en MacOS 10.14 pero es seguro que el proceso existe y se está ejecutando.pkill -Pfunciona bienps -jpara averiguar sobre pgids