Первоначально 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.