Что вызывает команда kill по умолчанию: SIGTERM или SIGKILL?

Ответ

По умолчанию команда 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

В нормальном девопсе так и делают: сначала дают шанс на благородное завершение, ждут немного. А если через пару секунд видно, что процесс — упрямая манда с ушами и не собирается сдаваться, тогда уже добивают девяткой. Терпения ебать ноль на такое упоротое поведение.