kill -9 - не лучший способ остановить процессМногие администраторы при зависшем процессе сразу используют:
kill -9 <PID>
Обычно это работает. Но далеко не всегда это правильное решение.▪️Что делает SIGKILL
Сигнал
-9 (SIGKILL) принудительно завершает процесс на уровне ядра.Процесс не может его перехватить, обработать или проигнорировать.
Ядро просто убивает его.
▪️Что при этом не происходит
Процесс не успевает:
сохранить данные
закрыть файлы
завершить активные операции
удалить временные файлы
выполнить обработчики завершения
Например, база данных может не успеть корректно завершить транзакции.
▪️Что использовать сначала
Обычный сигнал завершения:
kill <PID>
илиkill -15 <PID>
Это SIGTERM.Процесс получает запрос на завершение и может корректно освободить ресурсы.
▪️Посмотреть, реагирует ли процесс
Отправляем SIGTERM:
kill -15 1234
Проверяем:ps -p 1234
Если процесс всё ещё работает спустя разумное время, тогда можно переходить к более жёстким мерам.▪️Полезный приём
Для сервисов под systemd лучше использовать:
systemctl stop myapp
systemd сам отправит нужные сигналы в правильном порядке и подождёт завершения процесса.Только если сервис не реагирует, будет применено принудительное завершение.
▪️Почему это важно
kill -9 часто помогает быстро решить проблему, но одновременно может создавать новые. Поэтому его лучше рассматривать как последний инструмент, когда процесс уже не отвечает на обычное завершение.BashTex 📱 #scripts #kill9