Логотип

Принудительное завершение процесса в Linux с помощью команд Top, Kill, Pkill, Killall и Xkill

Принудительное завершение процесса в Linux с помощью команд Top, Kill, Pkill, Killall и Xkill

Если процесс перестаёт отвечать на запросы и потребляет слишком много системных ресурсов, значит, пришло время его завершить.

В Windows любой процесс можно легко завершить с помощью диспетчера задач. В Linux у большинства процессов есть собственный способ завершения. Некоторые можно завершить с помощью клавиши q на клавиатуре, а для некоторых используется команда exit.

К сожалению, некоторые процессы становятся слишком «упрямыми», чтобы их можно было завершить с помощью любого из рекомендуемых методов, и не позволяют завершить себя корректно.

В это время вы можете принудительно завершить процесс с помощью команд topkillpkillkillall и xkill в Linux.

 

Как завершить процесс?

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

😮 Факт
Init — это главный процесс, который запускается при загрузке системы и которому присваивается PID 1. Проще говоря, вы не можете завершить процесс init, если только init сам не решит, что его можно завершить (например, с помощью команды shutdown).

 

Ознакомьтесь с информацией ниже, чтобы понять, какие типы процессов можно завершить.

  • Пользователь может легко завершить свой собственный процесс.
  • Но он не может завершить процессы других пользователей.
  • Процессы системного уровня, такие как диспетчер отображения, не могут быть завершены обычными пользователями.
  • Пользователь root — король, он может завершить любой процесс (не переусердствуйте, это может привести к сбою системы).

 

Пользователь с правами root может завершить любой процесс, если он является пользователем root или если он добавляет sudo перед командой или входит в корневую оболочку с помощью команды su.

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

kill -l

 

Обычным пользователям не нужно беспокоиться обо всех этих сигналах. Вам нужно знать только о сигналах 1, 9 и 15.

Читать  Как мне перемещаться в терминале Linux
Название сигналаЗначение сигналаПоведение
SIGHUP1Отбой
SIGKILL9Сигнал уничтожения
SIGTERM15Прекратить

 

  • SIGHUP — менее безопасный способ завершить любой процесс. Расположите его между SIGKILL и SIGTERM.
  • SIGKILL — это принудительный способ завершить любой процесс, вызвав фатальную ошибку. В большинстве случаев это сработает, если процесс не отвечает, но при этом процесс не будет сохранён.
  • SIGTERM — это стандартный и самый безопасный способ корректно завершить любой процесс.

 

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

В Linux самый эффективный и простой способ завершить любой процесс — использовать команду top.

Команда top выводит список всех запущенных процессов в вашей системе с указанием их PID, объёма используемой памяти и загрузки ЦП.

top

 

Чтобы завершить любой процесс в интерфейсе top, нажмите кнопку k на клавиатуре и введите PID процесса.

 

Перечислите все запущенные процессы Linux.

Прежде чем вы завершите какой-либо процесс, вам нужно найти PID этого конкретного процесса, используя упомянутый метод.

Команды pidofpgrep, и ps — самый эффективный и простой способ узнать PID любого конкретного процесса, помимо всех остальных команд, таких как top в Linux.

 

Команда pidof

Чтобы узнать все запущенные процессы вместе с их PID без каких-либо изменений в выходных данных, подобных top команде, выполните команду pidof вместе с именем процесса.

pidof nano

 

Выше вы можете найти PID редактора nano, который равен 7153. Его можно использовать для завершения работы редактора.

 

Команда pgrep

Команда pgrep — это сложный способ поиска любого PID. Для выполнения базовой работы необходимо знать регулярные выражения.

Чтобы вернуть PID, можно использовать pgrep с именем процесса без каких-либо флагов, как показано ниже.

pgrep nano

 

Команда ps

Команда ps аналогична команде top, за исключением того, что она не требует взаимодействия или колебаний. Можно добавить флаги для извлечения определённой информации вместе с командой ps.

ps <параметры>

 

Ниже приведены наиболее часто используемые флаги, а также команда ps .

  • a — Перечислите все процессы во всей системе, а не у конкретных пользователей.
  • u — Предоставьте подробную информацию о каждом процессе.
  • x — Перечислите процессы-демоны, управляемые с помощью команды systemctl.

 

ps aux

 

Читать  Как выполнить Curl с помощью Kubectl

Вы можете передать команду grep вместе с ps для вывода информации о конкретных процессах с идентификатором PID.

ps aux | grep nano

 

Ниже описано поведение этой команды.

Завершение процесса в Linux с помощью команд Kill, Killall, Pkill и Xkill

В Linux есть четыре разных способа завершить любой процесс, а также команда top в зависимости от ситуации.

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

Если вы не знаете PID, не волнуйтесь. Используйте команду killall или pkill для завершения любого процесса по его имени.

 

📝 Примечание
Все процессы имеют одно и то же имя. Это означает, что если вы запустите один и тот же процесс несколько раз, то killall и pkill завершат все экземпляры процесса и дочерние процессы.

 

Не знаете PID или имя процесса? Тогда xkill — лучший вариант для вас, чтобы завершить любой процесс одним щелчком мыши.

 

Завершить процесс с помощью команды Kill

Команда kill может завершить процесс, если вы знаете его PID. По умолчанию она отправляет процессу сигнал SIGHUP или SIGTERM для завершения работы.

Замените PID на номер вашего процесса:

kill 7394

 

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

Не забудьте заменить PID:

kill -SIGKILL 7406

 

или

kill -9 7406

 

Можно использовать как имя сигнала, так и его значение; оба варианта работают одинаково.

 

Завершить процесс с помощью команды Killall

Если вы не знаете PID процесса, можно использовать команду killall. Команда killall отправляет процессу сигнал SIGHUP или SIGTERM и может завершить все процессы с одинаковым именем.

Например, если вы запустили несколько процессов nano в двух разных терминалах. Тогда команда killall завершит оба процесса nano одновременно, как показано ниже.

killall nano

 

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

Не забудьте заменить название процесса

killall -SIGKILL nano

 

или

killall -9 nano

 

Читать  Команда ln в Linux. Создание мягких и жестких ссылок

Можно использовать имя сигнала или его значение; оба варианта работают одинаково.

 

Завершить процесс с помощью команды Pkill

Команда pkill аналогична команде pgrep; она отправляет процессу сигнал SIGHUP или SIGTERM и завершает все процессы с таким же именем.

Например, если вы запустили несколько процессов gedit. То команда pkill завершит все процессы gedit одновременно, как показано ниже.

pkill gedit

 

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

Не забудьте заменить имя процесса:

pkill -SIGKILL gedit

 

или

pkill -9 gedit

 

Можно использовать либо имя сигнала, либо его значение. Оба варианта работают одинаково.

 

Как завершить процесс, из-за которого всё зависает и я не могу открыть терминал?

В таком случае предпочтительным способом решения проблемы будет перезагрузка.

 

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

Команда xkill используется для завершения процессов на X-серверах без указания PID или имени процесса. Она принудительно закрывает приложение с помощью сигнала SIGKILL, поэтому все несохранённые приложения закрываются без сохранения.

Введите приведённую ниже команду в терминале, чтобы начать завершение приложений.

xkill

 

После выполнения команды обычный курсор превратится в стрелку с крестиком ❌.

Наведите курсор на приложение, которое хотите закрыть, и нажмите кнопку left-click.

Выше вы можете видеть, что после выполнения команды xkill курсор в виде стрелки превратился в курсор в виде креста. После этого мы просто навели курсор на браузер Firefox и нажали left-clicked для закрытия.

Вы также можете создать сочетание клавиш для этой команды, чтобы выполнять её с помощью определённых комбинаций клавиш.

 

Выводы

  • Если процесс завис и не отвечает, его можно завершить вручную с помощью командной строки.
  • Чтобы завершить любой процесс в Linux, сначала узнайте его PID или имя с помощью команд toppidofpgrepps .
  • После того как вы нашли PID или имя процесса, используйте команды killkillall, или pkill для завершения процесса.
  • Вы ничего не нашли? Тогда используйте команду xkill для завершения любого процесса одним щелчком мыши.
  • Если это не работает с сигналами по умолчанию SIGHUP или SIGTERM, измените их на сигнал SIGKILL, который принудительно завершает процесс.
  • Если это по-прежнему не работает, обязательно проверьте владельца исходного процесса или подтвердите, что вы являетесь пользователем root.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала