kill
Команда kill в Linux — это один из важнейших инструментов управления процессами в системе. С её помощью можно корректно завершить зависшие программы, послать сигнал определённому процессу или даже перезапустить службу без перезагрузки сервера. Несмотря на простоту синтаксиса, команда обладает множеством параметров, которые стоит знать каждому системному администратору или DevOps-инженеру.
1. Основное назначение и синтаксис команды kill в Linux
Главная задача команды kill — отправить процессу определённый сигнал, чаще всего сигнал завершения. В системе Linux у каждого процесса есть уникальный PID (Process ID), по которому и осуществляется воздействие.
Базовый синтаксис выглядит так:
kill [опции] PIDили
kill -SIGNAL PIDЕсли вызвать команду без параметров, по умолчанию отправляется сигнал TERM (15) — мягкое завершение процесса.
Пример:
kill 1234Эта команда отправит сигнал SIGTERM процессу с идентификатором 1234. Если процесс корректно обрабатывает этот сигнал, он завершится без сбоев.
Чтобы узнать PID нужного процесса, можно использовать команду ps, top или pgrep. Например:
ps aux | grep firefoxПосле этого останется только применить команду kill с найденным PID.
2. Основные сигналы и параметры команды kill в Linux
Команда kill поддерживает множество сигналов, каждый из которых выполняет своё действие. Всего таких сигналов более 60, но наиболее часто применяются следующие:
- SIGTERM (15) — стандартный сигнал завершения, позволяющий процессу корректно завершить работу.
- SIGKILL (9) — немедленное завершение процесса без возможности обработки.
- SIGHUP (1) — перезапуск процесса, часто используется для перезапуска демонов после изменения конфигурации.
- SIGSTOP (19) — временная приостановка процесса.
- SIGCONT (18) — продолжение работы приостановленного процесса.
- SIGINT (2) — аналог нажатия Ctrl+C в терминале, мягко останавливает выполнение.
Для удобства можно использовать как числовое, так и символьное обозначение сигнала:
kill -9 5678
kill -SIGKILL 5678Обе команды выполнят одно и то же действие — мгновенно завершат процесс.
Чтобы увидеть список всех сигналов, используйте команду:
kill -lОна выведет перечень сигналов и их номера, например:
1) SIGHUP 2) SIGINT 3) SIGQUIT 9) SIGKILL 15) SIGTERM3. Практические примеры использования команды kill в Linux
1. Завершение конкретного процесса
Допустим, вы хотите закрыть процесс с PID 4500:
kill 4500Эта команда отправит стандартный SIGTERM.
2. Принудительное завершение зависшего процесса
Если процесс игнорирует стандартное завершение:
kill -9 4500В этом случае будет послан сигнал SIGKILL, который остановит процесс мгновенно.
3. Перезапуск службы через SIGHUP
Некоторые службы, например nginx, поддерживают перезапуск конфигурации без полной остановки:
kill -HUP $(cat /var/run/nginx.pid)Эта команда отправит сигнал SIGHUP, и nginx перечитает свой конфигурационный файл.
4. Завершение всех процессов с одинаковым именем
Иногда нужно остановить сразу несколько одинаковых процессов:
pkill firefoxКоманда pkill — это расширение kill, позволяющее указывать не PID, а имя процесса.
5. Завершение процессов по пользователю
Можно отправить сигнал всем процессам, запущенным определённым пользователем:
kill -u usernameЭто удобно для администрирования и очистки зависших сессий.
4. Расширенные возможности команды kill в Linux
Команда kill может использоваться не только для завершения процессов, но и для более точного управления ими. Например, при помощи комбинации с другими инструментами можно выстраивать сложные сценарии.
Использование kill вместе с xargs:
ps -ef | grep python | awk '{print $2}' | xargs kill -9Этот конвейер завершает все процессы, содержащие в имени слово “python”.
Пример применения в скриптах:
#!/bin/bash
PID=$(pgrep myscript)
if [ -n "$PID" ]; then
kill -15 $PID
echo "Процесс завершён корректно"
else
echo "Процесс не найден"
fiТакой подход часто используется в bash-скриптах для контроля фоновых задач.
Опция -s:
Позволяет явно указать тип сигнала:
kill -s HUP 1200Это эквивалентно kill -HUP 1200, но синтаксис более гибкий.
Опция -L:
Отображает список доступных сигналов в удобном виде:
kill -LSIGTERM), а не числовые, так как их номера могут отличаться между системами.Команда kill в Linux остаётся одним из самых мощных и востребованных инструментов в арсенале любого администратора. Она не только помогает управлять процессами, но и используется в автоматизации, CI/CD, DevOps-пайплайнах и диагностике системы. Понимание того, как работают сигналы и какие параметры доступны, позволяет действовать более уверенно и безопасно в любой Linux-среде.