Originalmente, o kill
comando só podia matar um processo, apenas mais tarde foi kill
aprimorado para permitir o envio de qualquer sinal.
Desde a versão 7 do Unix (1979), o padrão é sinalizar o processo de uma maneira que possa ser capturada e manipulada normalmente ou ignorada (enviando um sinal SIGTERM ), mas também pode ser usada para puxar o tapete de baixo para baixo. um processo (a kill -9
envia um sinal SIGKILL que não pode ser capturado e, portanto, não pode ser ignorado).
fundo
A computação, e o Unix em particular, é repleto de metáforas.
A principal metáfora dos processos é a de um ser vivo que nasce, vive e morre.
No Unix, todos os processos, exceto o init, têm pais , e qualquer processo que gera outros processos tem filhos . Os processos podem tornar-se órfãos (se seus pais morrerem) e podem até se tornar zumbis , se ficarem juntos após a morte.
Assim, o kill
comando se encaixa nessa metáfora.
Arqueologia Unix
Na página de manual da versão 4 do Unix (a versão em que kill
foi apresentada, juntamente com 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)
Eu particularmente gosto da seção final desta 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.
Quando a quinta edição chegou, o kill
comando já estava sobrecarregado para permitir que qualquer sinal fosse enviado.
No Manual do Programador Unix, Quinta Edição (p70):
If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).
O padrão, porém, era enviar um sinal 9, pois o sinal 15 ainda não existia (consulte a página 150).
Com a versão 6, a kill
página de manual não mencionava mais o mesmo bug da máquina de escrever .
Foi apenas na versão 7 do Unix que o sinal 15 foi introduzido (consulte as páginas do manual do sinal (2) e kill (1) da v7) e kill
mudou para isso em vez de usar o sinal 9.