Існує ряд сигналів, за замовчуванням яких розміщення - це припинення процесу. Кінцевим сигналом припинення є SIGKILL, оскільки з ним не можна керувати, і процес не має іншого вибору, як померти. Це також означає, що якщо ви надішлете його, процес позбавляється можливості очищення. Тому вдалий спосіб вимагає надіслати такий сигнал, як SIGTERM, який можна обробити спочатку і лише в тому випадку, якщо процес не вийде через деякий час, надішліть його SIGKILL.
Зауважте, що SIGINT і SIGQUIT не є хорошими кандидатами для довільного припинення процесу. Через те, що їх можна генерувати з клавіатури терміналу, багато додатків використовують їх для спеціальних цілей. Наприклад, інтерпретатор python використовує SIGINT для генерування KeyboardInterrupt
виключень (також у інтерактивних сесіях python, де він просто повертається до підказки), а JVM використовує SIGQUIT для скидання стежок стеків. SIGINT і SIGQUIT залишаються ефективними для більшості стандартних утиліт командного рядка, таких як find
або cat
.
Під час відключення системи більшість систем UNIX та Linux надсилає SIGTERM на весь процес, після чого чекає 5 секунд, а потім - SIGKILL. Це рекомендований спосіб безпечного вимкнення довільного процесу.
Зауважте також, що навіть SIGKILL може не припинити процес, який застряг у режимі безперебійного очікування, поки процес не прокинеться.
SIGKILL
.