SIGKILL
витягує килим з вашого запущеного процесу, припиняючи його негайно. Для дуже простих програм це добре; на практиці, однак, існує дуже мало "простих" програм.
Під обкладинками навіть тривіально схожі програми виконують всілякі трансакційні роботи, від яких потрібно очистити їх до завершення (подумайте про finally
блок на Java та інших мовах програмування), такі як закриття ручок ресурсів, видалення тимчасових файлів та видалення даних з пам'ять на диск. Ви не можете передбачити, коли програма може робити щось подібне.
Якщо вам пощастить, ви не помітите нічого зайвого, якщо надішлете лист SIGKILL
, але не зможете пощастити назавжди, і ви можете не знати, що щось пішло не так, поки не пізно відновити те, що було втрачено.
Вам майже ніколи не потрібно надсилати повідомлення SIGKILL
, і ви повинні бути впевнені, що вичерпали свої альтернативи перед цим. У багатьох випадках перезавантаження (що в кінцевому підсумку буде надсилати SIGKILL
s в недоброзичливі програми) безпечніше, ніж самовільне надсилання SIGKILL
. Я, мабуть, можу з однієї сторони рахувати кількість разів, які мені потрібно було надіслати SIGKILL
(і, швидше за все, все, що я роблю).
Взагалі, ви можете використовувати Ctrl+ C(що надсилає процес переднього плану a SIGINT
) або SIGTERM
(як у "завершити"), щоб доручити процесу зупинити те, що він робить, і вийти.
Деякі подальші читання: