Ответ
По умолчанию команда kill отправляет сигнал SIGTERM (сигнал 15). Это сигнал «терминации», который позволяет процессу корректно завершиться: сохранить состояние, закрыть файловые дескрипторы и освободить ресурсы.
Сигнал SIGKILL (сигнал 9) отправляется только при явном указании. Он принудительно и немедленно завершает процесс, и процесс не может его перехватить или обработать.
Примеры:
# Отправить SIGTERM процессу с PID 1234 (стандартное поведение)
kill 1234
# Отправить SIGKILL для принудительного завершения
kill -9 1234
# Или эквивалентно:
kill -SIGKILL 1234
В DevOps-практиках сначала используется SIGTERM, и только если процесс не завершается за разумное время, применяется SIGKILL.
Ответ 18+ 🔞
А, ну это про сигналы в линуксе! Ёпта, классика же. Слушай, сейчас разжуёшь.
Вот смотри, по умолчанию, когда ты пишешь просто kill, система шлёт процессу нежный намёк — сигнал SIGTERM. Это как вежливо постучать в дверь и сказать: «Братан, пора закругляться, сохрани данные и вырубайся». Процесс может этот сигнал поймать, всё красиво прибрать и только потом сдохнуть. Цивилизованно, одним словом.
А вот если процесс упёрся рогом и не реагирует на намёки, в ход идёт тяжёлая артиллерия — SIGKILL. Это уже не стук в дверь, а вышибала с ногой в сраку. Процессу даже моргнуть не дадут, его просто вырубят нахуй моментально, без возможности что-то сохранить. Жесть, конечно, но иногда без этого никак.
Вот как это выглядит в деле:
# Вежливо просим процесс 1234 завершиться (SIGTERM)
kill 1234
# А если он заартачился — пиздуй нахуй сразу (SIGKILL)
kill -9 1234
# Или так, для любителей длинных слов:
kill -SIGKILL 1234
В нормальном девопсе так и делают: сначала дают шанс на благородное завершение, ждут немного. А если через пару секунд видно, что процесс — упрямая манда с ушами и не собирается сдаваться, тогда уже добивают девяткой. Терпения ебать ноль на такое упоротое поведение.