Первоначально killкоманда могла только убить процесс, только позже была killулучшена возможность отправки любого сигнала.
Начиная с версии 7 Unix (1979) по умолчанию сигнализировал процесс так, чтобы его можно было поймать и обработать либо изящно, либо игнорировать (посылая сигнал SIGTERM ), но его также можно использовать для извлечения коврика из-под процесс (a kill -9посылает сигнал SIGKILL, который не может быть перехвачен и, следовательно, не может быть проигнорирован).
Фон
Вычисления, и в частности Unix, изобилуют метафорой.
Основная метафора для процессов - это метафора живого существа, которое рождается, живет и умирает.
В Unix все процессы, кроме init, имеют родителей , а любой процесс, который порождает другие процессы, имеет потомков . Процессы могут стать осиротевшими (если их родитель умирает) и даже могут стать зомби , если они останавливаются после своей смерти.
Таким образом, killкоманда вписывается в эту метафору.
Unix Археология
На странице руководства от версии 4 Unix (версия, в которой killбыла представлена, наряду с ps) мы находим:
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)
Мне особенно нравится последний раздел этой страницы руководства:
BUGS
Clearly people should only be allowed to kill
processes owned by them, and having the same typewriter
is neither necessary nor sufficient.
К тому времени, когда появилось пятое издание, killкоманда уже была перегружена, чтобы можно было отправить любой сигнал.
Из Руководства для программистов Unix, пятое издание (p70):
If a signal number preceded by "-" is given
as an argument, that signal is sent instead of
kill (see signal (II)).
По умолчанию, однако, было послано сигнал 9, так как сигнал 15 еще не существовал (см. P150).
В версии 6 на killстранице руководства больше не упоминалась та же ошибка пишущей машинки .
Только с версией 7 Unix был введен сигнал 15 (см. Справочные страницы signal (2) и kill (1) для v7) и killпереключен на него, а не на использование сигнала 9.