SIGKILL
вытаскивает коврик из вашего рабочего процесса, немедленно прекращая его. Для очень простых программ это хорошо; однако на практике очень мало «простых» программ.
Под прикрытием даже тривиально кажущиеся программы выполняют все виды транзакционной работы, от которой им необходимо очиститься перед завершением (например, finally
блок в Java и других языках программирования), такие как закрытие дескрипторов ресурсов, удаление временных файлов и удаление данных из память на диск. Вы не можете предвидеть, когда программа может делать что-то подобное.
Если вам повезет, вы не заметите ничего плохого, если отправите SIGKILL
, но вы не можете быть счастливым вечно, и вы можете не знать, что что-то пошло не так, пока не станет слишком поздно, чтобы восстановить то, что было потеряно.
Вам почти никогда не нужно отправлять сообщение SIGKILL
, и вы должны быть уверены, что исчерпали свои альтернативы, прежде чем сделать это. Во многих случаях перезагрузка (которая в конечном итоге приведет SIGKILL
к неправильной работе программ) безопаснее, чем отправка SIGKILL
вручную. Я, вероятно, могу посчитать с одной стороны, сколько раз мне нужно было отправить SIGKILL
(и, вероятно, все мои собственные работы).
Вообще говоря, вы можете использовать Ctrl+ C(который отправляет приоритетный процесс a SIGINT
) или SIGTERM
(как в «завершить»), чтобы дать команду процессу остановить то, что он делает, и выйти.
Некоторое дальнейшее чтение: