À l'origine, la kill
commande ne pouvait tuer qu'un processus, mais elle a été kill
améliorée ultérieurement pour vous permettre d'envoyer n'importe quel signal.
Depuis la version 7 d'Unix (1979), la valeur par défaut a été de signaler le processus d'une manière qui peut être interceptée et gérée avec élégance ou ignorée (en envoyant un signal SIGTERM ), mais elle peut également être utilisée pour retirer le tapis de sous un processus (a kill -9
envoie un signal SIGKILL qui ne peut pas être capturé et ne peut donc pas être ignoré).
Contexte
L'informatique, et Unix en particulier, regorge de métaphores.
La métaphore principale des processus est celle d'un être vivant qui naît, vit et meurt.
Sous Unix, tous les processus sauf init ont des parents , et tout processus qui engendre d' autres processus a des enfants . Les processus peuvent devenir orphelins (si leur parent décède) et peuvent même devenir des zombies , s'ils traînent après leur mort.
Ainsi, la kill
commande correspond à cette métaphore.
Archéologie Unix
À partir de la page de manuel de la version 4 d'Unix (la version où a kill
été introduite, avec ps
), nous trouvons:
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)
J'aime particulièrement la dernière section de cette page de manuel:
BUGS
Clearly people should only be allowed to kill
processes owned by them, and having the same typewriter
is neither necessary nor sufficient.
Au moment de la cinquième édition, la kill
commande avait déjà été surchargée pour permettre l'envoi de tout signal.
Dans le manuel des programmeurs Unix, cinquième édition (p70):
If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).
La valeur par défaut était cependant d'envoyer un signal 9, car le signal 15 n'existait pas encore (voir p150).
Avec la version 6, la kill
page de manuel ne mentionnait plus le même bogue de machine à écrire .
Ce n'est qu'avec la version 7 d'Unix que le signal 15 a été introduit (voir les pages de manuel signal (2) et kill (1) pour v7) et est kill
passé à cela plutôt que d'utiliser le signal 9.