В Linux есть три основные команды для завершения процессов:

  • kill — работает по PID (идентификатор процесса)
  • killall — завершает процессы по имени
  • pkill — тоже по имени, но с расширенными возможностями фильтрации

Кто может убивать процессы?

  • Обычные пользователи могут убивать только свои процессы.
  • root — может убивать все процессы.

Сигналы для завершения процесса

Команды посылают сигнал процессу. Если сигнал не указан, по умолчанию отправляется TERM (номер 15) — мягкое завершение.

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

  • 1 (HUP) — перезагрузить процесс
  • 9 (KILL) — убить процесс насильно, без возможности отработать
  • 15 (TERM) — аккуратно завершить процесс

Сигналы можно указывать по-разному:

  • Числом: -9
  • С префиксом SIG: -SIGKILL
  • Без префикса SIG: -KILL

Чтобы посмотреть все доступные сигналы, используй:

kill -l

Завершаем процесс с помощью kill

Сначала узнай PID процесса. Например, для браузера Google Chrome:

pidof google

Затем отправь сигнал (например, жесткий kill):

kill -9 2551 2514 1963 1856 1771

Здесь перечислены PID нескольких процессов.

Завершаем процессы по имени с помощью killall

killall -9 google

Это сразу убьёт все процессы с именем google.

Дополнительные возможности:

Завершить все процессы пользователя dev:

sudo killall -u dev

Узнать больше опций:

killall

Завершаем процессы с помощью pkill

pkill ищет процессы по шаблону и завершает их:

pkill -9 google

Можно сузить поиск, например, убить только процессы пользователя dev:

pkill -9 -u dev google

Итог

  • kill — когда знаешь PID и хочешь точечно убить процесс.
  • killall — когда надо убить все процессы с определённым именем.
  • pkill — гибче, позволяет фильтровать по имени, пользователю и другим критериям.

Если процесс упёрся рогом — смело пиши -9 (SIGKILL), но сначала попробуй мягкий -15.