Why was it decided to call the kill
command "kill"?
I mean, yes, this utility is often used to terminate processes, but it can actually be used to send any signal.
Isn't it slightly confusing? Maybe there are some historical reasons.
All I know from man kill
that this command appeared in Version 3 AT&T UNIX.
Best Answer
Originally, the
kill
command could only kill a process, only later waskill
enhanced to allow you to send any signal.Since version 7 of Unix (1979) the default has been to signal the process in a way which can be caught and either handled gracefully or ignored (by sending a SIGTERM signal), but it can also be used to pull the rug out from under a process (a
kill -9
sends a SIGKILL signal which cannot be caught and thus cannot be ignored).Background
Computing, and Unix in particular, is rife with metaphor.
The main metaphor for processes is that of a living thing which is born, lives and dies.
In Unix all processes except init have parents, and any process which spawns other processes has children. Processes may become orphaned (if their parent dies) and can even become zombies, if they hang around after their death.
Thus, the
kill
command fits in with this metaphor.Unix Archaeology
From the manual page from version 4 of Unix (the version where
kill
was introduced, along withps
) we find:I particularly like the final section of this man page:
By the time fifth edition had come around, the
kill
command had already been overloaded to allow any signal to be sent.From the Unix Programmers Manual, Fifth Edition (p70):
The default though was to send a signal 9, as signal 15 did not yet exist (see p150).
With version 6 the
kill
man page no longer mentioned the same typewriter bug.It was only with version 7 of Unix that signal 15 was introduced (see see the signal(2) and kill(1) man pages for v7) and
kill
switched to that rather than using signal 9.