Originalmente, el kill
comando solo podía matar un proceso, solo más tarde se kill
mejoró para permitirle enviar cualquier señal.
Desde la versión 7 de Unix (1979), el valor predeterminado ha sido señalar el proceso de una manera que se pueda atrapar y manejar con gracia o ignorar (enviando una señal SIGTERM ), pero también se puede usar para sacar la alfombra de debajo un proceso (a kill -9
envía una señal SIGKILL que no se puede capturar y, por lo tanto, no se puede ignorar).
Antecedentes
La informática, y Unix en particular, está plagada de metáforas.
La metáfora principal de los procesos es la de un ser vivo que nace, vive y muere.
En Unix, todos los procesos excepto init tienen padres , y cualquier proceso que genera otros procesos tiene hijos . Los procesos pueden quedar huérfanos (si sus padres mueren) e incluso pueden convertirse en zombis , si se quedan después de su muerte.
Por lo tanto, el kill
comando encaja con esta metáfora.
Arqueología de Unix
En la página del manual de la versión 4 de Unix (la versión donde kill
se introdujo, junto con ps
) encontramos:
NAME
kill - do in an unwanted process
SYNOPSIS
kill processid ...
DESCRIPTION
Kills the specified processes.
The processid of each asynchronous process
started with `&' is reported by the shell.
Processid's can also be found by using ps (I).
The killed process must have
been started from the same typewriter
as the current user, unless
he is the superuser.
SEE ALSO
ps(I), sh(I)
Me gusta especialmente la sección final de esta página de manual:
BUGS
Clearly people should only be allowed to kill
processes owned by them, and having the same typewriter
is neither necessary nor sufficient.
Cuando llegó la quinta edición, el kill
comando ya se había sobrecargado para permitir que se enviara cualquier señal.
Del Manual de Programadores de Unix, Quinta Edición (p70):
If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).
Sin embargo, el valor predeterminado era enviar una señal 9, ya que la señal 15 aún no existía (ver p150).
Con la versión 6, la kill
página de manual ya no menciona la misma máquina de escribir error de .
Fue solo con la versión 7 de Unix que se introdujo la señal 15 (consulte las páginas de manual de la señal (2) y kill (1) para v7) y se kill
cambió a eso en lugar de usar la señal 9.