Команда kill в Unix/Linux системах отправляет сигналы процессам, а не только "убивает" их, как можно предположить из названия. По умолчанию (без указания сигнала) она отправляет сигнал TERM (SIGTERM), который запрашивает корректное завершение процесса.
kill [опции] <PID>...
Где <PID> - это идентификатор процесса (Process ID)
| Сигнал | Число | Назначение |
|---|---|---|
| TERM | 15 | Запрос корректного завершения (по умолчанию) |
| KILL | 9 | Безусловное завершение |
| HUP | 1 | Перезагрузка (часто для релоада конфигов) |
| INT | 2 | Аналог Ctrl+C (прерывание) |
| STOP | 19 | Приостановка процесса |
| CONT | 18 | Продолжение приостановленного процесса |
kill -9 1234 # Немедленное завершение процесса 1234
kill -HUP 5678 # Перезапуск демона (например, nginx)
kill -TERM 9101 # Вежливый запрос на завершение
kill -STOP 2345 # Приостановка процесса
kill -CONT 2345 # Возобновление приостановленного процесса
-l # Показать список всех доступных сигналов
-s SIG # Указать сигнал по имени (например, -s KILL)
-n NUM # Указать сигнал по номеру (например, -n 9)
Через ps:
ps aux | grep nginx
Через pgrep:
pgrep -f nginx
Через pidof:
pidof nginx
Разные виды kill:
/bin/kill)/usr/bin/kill)Отправка сигналов группе процессов:
kill -TERM -1234 # Отправка сигнала группе процессов 1234
Отправка сигналов по имени процесса:
pkill nginx # Отправка SIGTERM всем процессам nginx
Корректный перезапуск сервиса:
kill -HUP $(cat /var/run/nginx.pid)
Завершение зависшего процесса:
kill -TERM 1234 # Сначала вежливый запрос
sleep 5
kill -KILL 1234 # Затем принудительное завершение
Отладка приложений:
kill -USR1 5678 # Многие демоны используют для отладки
Права доступа:
Неперехватываемые сигналы:
Последствия SIGKILL:
pkill - отправка сигналов по имени процесса:
pkill -f "python script.py"
killall - отправка сигналов всем процессам с указанным именем:
killall nginx
Основное назначение:
Ключевые сигналы:
Лучшие практики:
Для DevOps:
Команда kill - это мощный инструмент управления процессами, который должен использоваться осознанно и аккуратно.