Спочатку kill
команда могла вбити процес лише, лише згодом була kill
вдосконалена, щоб дозволити надсилати будь-який сигнал.
Починаючи з версії 7 Unix (1979), за замовчуванням було подано сигнал про процес, який можна зловити і обробляти витончено або ігнорувати (надсилаючи сигнал SIGTERM ), але його також можна використовувати для витягування килима з-під процес ( 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 (див. Див. Сигнал (2) та убий (1) man сторінки для v7) і kill
перейшов на це, а не використовуючи сигнал 9.