Команда kill отправляет сигнал процессу или группе процессов. Её название историческое: запрошенный сигнал может завершить, остановить, продолжить процесс или вызвать определённое приложением действие. До отправки всегда подтверждайте точную цель и изучайте документированное поведение программы для сигналов.
Процессы · Урок 7
kill (завершение)
Узнайте, как определить процесс и отправить подходящий сигнал командой kill с безопасной последовательностью эскалации.
Запрос нормального завершения
Если указан только PID, kill по умолчанию отправляет SIGTERM:
$ kill 12445
При явном указании сигнала предпочитайте символическое имя:
$ kill -TERM 12445
Стандартное действие SIGTERM — завершение, но программа может перехватить или игнорировать его. Правильно спроектированная служба способна с помощью обработчика прекратить принимать работу, сохранить подходящее состояние и освободить ресурсы приложения. Это возможность, а не гарантия немедленной или успешной очистки.
Какой сигнал по умолчанию запрашивает kill PID?
Проверка цели
PID могут использоваться повторно, поэтому устаревший PID позднее способен обозначать другой процесс. Проверьте живую цель непосредственно перед действием:
$ ps -p 12445 -o pid,ppid,user,lstart,stat,cmd
Проверьте пользователя, время запуска, команду, родителя, владельца-службу и эксплуатационную роль. Если процессом управляет диспетчер служб, по возможности используйте его команду остановки или перезагрузки, чтобы он сохранил правильное состояние и не перезапустил потомка немедленно.
С учётом правил учётных данных вы можете отправлять сигналы собственным процессам. Для процесса другого пользователя обычно нужны соответствующие привилегии. Не применяйте широкую команду по имени, пока не проверите каждое совпадение.
Почему PID следует проверять непосредственно перед отправкой сигнала?
Проверка разрешения сигналом ноль
Сигнал номер ноль выполняет проверку ошибок без доставки настоящего сигнала:
$ kill -0 12445
Успех означает, что в этот момент существует процесс с таким PID и вызывающей стороне разрешено посылать ему сигналы. Ошибка неоднозначна: процесс может отсутствовать либо у вызывающей стороны может не быть прав. Проверяйте сообщение и код завершения, а не переводите любую ошибку как «не работает». Это также лишь мгновенная проверка, не устраняющая последующую гонку повторного использования PID.
Что в данный момент устанавливает успешный kill -0 PID?
Эскалация только при необходимости
Если разрешённая цель не завершается после SIGTERM, дайте ей подходящее для нагрузки время и выясните причину. Затем, когда принудительное завершение оправданно, отправьте:
$ kill -KILL 12445
SIGKILL нельзя перехватить, игнорировать или заблокировать, поэтому программа не может выполнить очистку на уровне приложения. Могут остаться незавершённые транзакции, временное состояние или работа по восстановлению для других компонентов. Используйте его как эскалацию, а не обычный первый шаг.
Другие сигналы имеют смысл только согласно контракту принимающей программы. SIGHUP часто запрашивает перезагрузку конфигурации, но некоторые программы сохраняют его стандартное завершающее действие. SIGSTOP приостанавливает без очистки, а SIGCONT возобновляет остановленный процесс.
Каков основной эксплуатационный недостаток SIGKILL?
Практикуйтесь выбирать сигналы только для запущенных вами процессов в изолированной среде. Лаборатория Управление и мониторинг процессов Linux предоставляет контролируемый процесс проверки и завершения.
Урок завершён
Вы завершили kill (завершение)
Теперь вы можете отправлять сигналы процессам осознанным и проверяемым способом.
До действия подтверждайте живую цель и её супервизор.
Используйте
SIGTERMкак обычный запрос завершения.Интерпретируйте сигнал ноль как мгновенную проверку существования и прав.
Оставляйте
SIGKILLдля оправданной эскалации после исследования.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт