Главная > Управление процессами > kill

Руководство по команде kill: Завершение процессов

`kill` команда используется для отправки сигналов процессам, выполняющимся в системе Linux, для управления этими процессами. В основном она используется для завершения (kill) процессов, но также можно отправить другие типы сигналов, чтобы изменить поведение процесса. В этом руководстве вы узнаете основные способы использования команды `kill` и как использовать различные сигналы.

Обзор kill

`kill` команда отправляет сигнал процессу с определенным идентификатором процесса (PID). Наиболее распространенным сигналом является сигнал завершения процесса, но в зависимости от типа сигнала процесс может реагировать по-разному. Например, процесс может быть приостановлен или ему может быть предложено перезагрузить файл конфигурации.

Важность идентификатора процесса (PID)

`kill` команда по умолчанию принимает PID в качестве аргумента. Поэтому важно точно знать, какой процесс вы хотите контролировать. Вы можете использовать команды `ps` или `top`, чтобы узнать PID процесса.

Основные функции kill

  • Завершение процесса: Принудительное или нормальное завершение ненужного или неисправного процесса.
  • Перезапуск/перезагрузка процесса: Отправка определенного сигнала, чтобы процесс снова прочитал файл конфигурации или перезапустился.
  • Управление системными ресурсами: Завершение процесса, который потребляет слишком много ресурсов, чтобы обеспечить стабильность системы.

Наиболее часто используемые сигналы

Существует множество сигналов, но два из них используются чаще всего:

Основные сигналы

  • **SIGTERM (15, по умолчанию)**: Отправляет процессу мягкий запрос 'Завершите'. Процесс, получив этот сигнал, может выполнить завершающие действия и завершиться. В большинстве случаев сначала пытаются использовать этот сигнал.
  • **SIGKILL (9)**: Немедленно принудительно завершает процесс. Процесс не может игнорировать или перехватить этот сигнал и будет завершен без возможности выполнения завершающих действий. Используйте как последнее средство.

Основные параметры команды kill

`kill` команда управляет процессами с использованием номера сигнала или имени сигнала. При отправке сигнала определенному процессу важно точно указать его PID.

1. Основное использование

2. Полезные сигналы

3. Просмотр списка всех сигналов

Сгенерированная команда:

Комбинируйте команды.

Описание:

`kill` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Команда killall (Завершение по имени процесса)

`killall` команда, в отличие от `kill`, использует имя процесса вместо PID и отправляет сигнал всем процессам, соответствующим этому имени. Это очень удобно для завершения всех экземпляров определенного приложения.

Нормальное завершение по имени процесса

killall nginx

Отправляет сигнал SIGTERM всем процессам с именем `nginx`, запрашивая нормальное завершение.

Принудительное завершение по имени процесса

killall -9 firefox

Отправляет сигнал SIGKILL всем процессам с именем `firefox`, немедленно принудительно завершая их.

Завершение только процессов конкретного пользователя

killall -u $(whoami) chrome

Завершает только процессы `chrome`, запущенные текущим пользователем. Не затрагивает процессы `chrome` других пользователей.

Команда pkill (Завершение по шаблону)

`pkill` команда, аналогичная `killall`, завершает процессы по имени, но более гибкая, так как использует регулярные выражения для поиска процессов. Это полезно для поиска процессов по частичному имени или для одновременного завершения нескольких связанных процессов.

Нормальное завершение по шаблону

pkill http

Отправляет сигнал SIGTERM всем процессам, имя которых содержит 'http'. (Например: `httpd`, `apache2` и т.д.)

Принудительное завершение по шаблону

pkill -9 mysql

Отправляет сигнал SIGKILL всем процессам, имя которых содержит 'mysql', принудительно завершая их.

Завершение процессов, принадлежащих конкретному пользователю

pkill -u www-data php-fpm

Завершает все процессы 'php-fpm', принадлежащие пользователю `www-data`.

Примеры использования

Изучите различные примеры использования команд `kill`, `killall`, `pkill`, чтобы эффективно управлять процессами на системе.

Завершение процесса с конкретным идентификатором (PID)

kill 12345

Отправляет сигнал SIGTERM процессу с PID `12345`, пытается завершить его нормально.

Принудительное завершение процесса (используя PID)

kill -9 54321

Принудительно завершает процесс с PID `54321`, если он не отвечает.

Перезагрузка процесса Nginx (используя SIGHUP)

sudo kill -1 $(cat /run/nginx.pid)

Находит мастер-процесс Nginx (PID) и отправляет сигнал `SIGHUP`, чтобы заставить его снова прочитать файл конфигурации. (PID процесса Nginx можно проверить с помощью `ps aux | grep nginx` и т.д.)

Завершение всех браузеров Chrome по имени

killall chrome

Нормально завершает все процессы браузера Chrome, которые выполняются. (Закрытые окна могут привести к потере несохраненного содержимого.)

Завершение всех процессов пользователя 'johndoe'

sudo killall -9 -u johndoe

Принудительно завершает все процессы, запущенные пользователем `johndoe`. (Требуются права администратора.)

Завершение процессов, потребляющих много ЦП (пример)

# 1. Проверьте PID с помощью top или htop (например: 12345)
# 2. Завершите этот PID
kill 12345

Обычный сценарий: проверьте PID процессов, потребляющих много ЦП, с помощью `top` или `htop`, а затем завершите их.


Те же команды в категории