Команды kill и killall в Linux: как завершить ненужные процессы

Виртуальная машина
бесплатно навсегда

Забрать
Avatar icon

Марина Суворова

Редактор блога

Статья

Время чтения

5 минут

Когда Linux перегружена или процессы системы начинают зависать, их завершение — единственный способ решить проблему. Для этого операционная система предлагает администраторам специальные инструменты — команды kill и killall. В статье разберем несколько способов, как с их помощью закрывать любые процессы, в том числе используя права суперпользователя. 

Команда killall в терминале Linux
Команда killall в терминале Linux

Подготовка к завершению процессов

Прежде чем «убить» какой-либо процесс в ОС Linux, нужно узнать его идентификатор — PID. В Linux существует несколько способов его найти, включая команды ps, top и pidof. Рассмотрим их.

Поиск PID процесса
Поиск PID процесса

Команда ps

Команда ps возвращает статический снимок текущих процессов. Она полезна в тех случаях, если вы хотите получить всю информацию — в том числе PID — по всем процессам в системе. Для этого введите в терминал:

ps aux

В результате операционная система отобразит все процессы с подробной информацией по каждому, включая искомый идентификатор PID. 

А еще с помощью команды ps можно вывести информацию о конкретном процессе, использовав его имя: 

ps aux | grep <название_процесса>

Команда top     

Чтобы отслеживать процессы в реальном времени, а не в статике, как при работе с командой ps, вы можете использовать команду top. Иными словами, для динамического мониторинга введите в терминал: 

top

Так вы сможете увидеть таблицу, где процессы системы сортируются по убыванию нагрузки на центральный процессор. Чтобы обнаружить в этом списке конкретный процесс и определить его PID, нажмите / и введите его имя.

Команда pidof

Команда pidof позволяет идентифицировать PID нежелательного процесса в случае, если вы знаете о том, каким исполняемым файлом он был запущен. Для этого введите в терминал команду:

pidof <название_процесса>

В случае если процесс в данный момент активен, ОС отобразит вам его PID. 

Как завершить процесс с помощью команды kill

Как только вы узнали уникальный идентификатор процесса (PID), можете сразу воспользоваться командой kill. В операционной системе Linux эта команда является стандартным инструментом для управления процессами.

В большинстве случаев синтаксис команды будет выглядеть так: kill [опция] PID. То есть сразу после kill следует:

  • указать номер сигнала — это числовое значение, которое определяет, какой именно сигнал будет отправлен процессу для управления его выполнением;

  • ввести уникальный идентификатор процесса (PID), который вы получили ранее. 

В некоторых случаях завершить нежелательный процесс можно без указания дополнительных сигналов. Тогда для завершения процесса достаточно ввести команду:

kill PID

Однако, если завершить задачу с помощью kill PID не удалось, нужно использовать специальные сигналы:

  • SIGTERM (15). Сигнал, который используется по умолчанию и сообщает процессу о завершении. Большинство программ при получении SIGTERM без каких-либо заминок освобождают ресурсы, завершают операции и корректно закрываются с сохранением данных. 

  • SIGKILL (9). Отправляет процессу команду на принудительное завершение. Используется, если задача игнорирует сигнал SIGTERM и продолжает выполняться. 

Еще для завершения процессов в Linux могут использоваться такие сигналы, как SIGSTOP (19)  и SIGCONT (18). Первый приостанавливает процесс без его завершения (делает паузу), а второй — возобновляет выполнение задачи после приостановки. Как и в случае со всеми другими сигналами, они прописываются в команде после дефиса. Например: 

kill -19 PID

Как завершить процессы с помощью команды killall

Команда killall нужна для завершения всех процессов с заданным именем или группы процессов с частично совпадающими именами. 

Синтаксис killall похож на синтаксис команды kill, однако для ее использования необязательно знать PID. Вместо этого нужно ввести наименование процесса, например:

killall [опции] <название_процесса>

Как и в случае с kill, команда для прекращения нескольких процессов поддерживает сигналы для передачи дополнительных указаний задачам. Например, чтобы принудительно закрыть несколько окон браузера Firefox, нужно ввести команду:

killall -9 firefox

Таким же образом можно вводить сигналы для приостановки процесса и продолжения его выполнения после паузы.

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

Помимо рассмотренных выше команд kill и «killall, в операционной системе Linux есть и другие, которые могут быть пригодиться для завершения процессов.

Например, команда pkill может завершить все процессы, которые отвечают какому-либо указанному шаблону. Допустим, администратору нужно одновременно прекратить все задачи, так или иначе, связанные с использованием SSH. Для этого следует ввести в терминал команду следующего вида: 

pkill ssh

А еще, если по каким-то причинам стандартные средства работы с операционной системой Linux вам не подходят или не нравятся, можно использовать визуальное средство завершения процессов. Для этого в ОС предусмотрена утилита htop. Чтобы активировать ее, введите в терминал команду htop, которая откроет визуальный интерфейс для управления процессами:

htop

Чтобы переключаться между задачами в интерфейсе, используйте стрелки на клавиатуре, а чтобы закрыть его — кнопку F9.

Проверка завершения процесса

После завершения процесса с помощью любой из перечисленных выше команд важно убедиться в том, что он действительно остановлен. Для этого администраторам операционной системы Linux предлагается использовать команду ps, особенности работы которой мы уже рассмотрели ранее.

Введите команду формата: 

ps aux | grep <название_процесса>

Так вы увидите список процессов, который активен в системе. Если в нем нет принудительно завершенной задачи, значит, она действительно больше не работает. Аналогично можно использовать команды top или htop.

Важно также отметить, что иногда процесс не удается завершить из-за отсутствия у пользователя прав администратора. Чтобы проверить их наличие, нужно добавить sudo перед командой для завершения процесса: 

sudo kill PID

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

Каждый процесс в Linux принадлежит пользователю с определенными правами и доступами — такое разделение полезно, если работу в одной системе нужно разграничить между разными юзерами. 

Закрытие любых процессов — это задача, которую можно выполнить только в статусе суперпользователя (root). Если же попытаться закрыть чужой процесс без использования прав суперпользователя, терминал вернет ошибку вида Operation not permitted. 

Коротко о командах kill и killall в Linux

В сообществе программистов Linux славится своей простотой и логичностью. И прямое подтверждение этому мнению — команды kill и killall. Они позволяют быстро и эффективно закрывать зависшие приложения, освобождая ресурсы для еще более удобной работы в системе. А для более прицельного управления используются в связке с такими утилитами, как ps, htop и pidof. 

Если вы тоже являетесь поклонником Linux или просто привыкли в ней работать, в облаке Cloud.ru для вас всегда доступны готовые образы загрузочных дисков операционных систем Ubuntu и Debian разных версий. С их помощью удастся легко развернуть виртуальную машину, чтобы ускорить создание сервера или тестовой среды.

Содержание

  • Подготовка к завершению процессов
  • Как завершить процесс с помощью команды kill
  • Как завершить процессы с помощью команды killall
  • Дополнительные инструменты для завершения процессов
  • Проверка завершения процесса
  • Права и доступы при завершении процессов
  • Коротко о командах kill и killall в Linux

Вам может понравиться