Как убить процесс Linux

Обновлено: 03.07.2024

Вы можете легко остановить программу в терминале Linux, нажав клавиши Ctrl+C. Но часто бывает, что нужно «убить» не отвечающую программу. В Windows у вас есть диспетчер задач для этой ситуации. Вы также можете использовать диспетчер задач в Linux, но способ командной строки намного лучше и эффективнее для работы с неотвечающими программами.

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

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

Если вы запускаете приложение, оно запускает какой-то процесс в фоновом режиме. Если вы хотите принудительно закрыть это приложение, вы можете завершить связанный с ним процесс.

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

Шаг 1. Найдите идентификатор процесса (PID) программы

Есть несколько способов найти PID процесса.

Если вы знаете имя процесса, вы можете использовать команду pidof следующим образом:

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

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

Если вы не знаете точное название программы, вы можете попробовать команду ps. Эта команда ps используется для просмотра запущенных процессов в системе. Вы можете использовать команду grep с именем программы (или с тем, что вы помните).

ps доп | grep -i «имя нужной программы»

Команда

ps aux возвращает все запущенные процессы в системе. И после этого grep показывает строку, совпадающую с названием программы. Вывод команды будет таким:

Как показано на рисунке выше, вы можете получить идентификатор процесса программы/процесса во втором столбце. Просто игнорируйте строку с «–color =auto».

Шаг 2. Завершите процесс с помощью PID

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

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

Вы также можете комбинировать команду kill с командой pidof, чтобы убить весь процесс программы.

Конечно, вы должны заменить имя_программы на имя программы, которую хотите убить.

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

Если вы знаете название программы, вы можете использовать великолепную команду killall и убить все процессы этой программы одной командой.

Как вы убиваете программы в Linux?

Надеюсь, это краткое руководство помогло вам. Какой ваш любимый способ убить программу в Linux? Диспетчер задач, kill, killall или xkill?

Операционная система Linux поставляется с командой kill для завершения процесса. Команда позволяет продолжить работу сервера без необходимости перезагрузки после серьезного изменения/обновления. Здесь проявляется великая сила Linux, и это одна из причин, почему Linux работает на 96,4% серверов на планете.

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

Использование команды kill из /usr/bin предоставляет вам дополнительную возможность для уничтожения процесса по имени процесса с помощью pkill.

Использование команды Kill

Общий синтаксис команды kill:

Для команды kill имя сигнала может быть:

Судя по приведенному выше поведению, SIGTERM является наиболее безопасным способом завершения процесса по умолчанию. SIGHUP — менее безопасный способ завершения процесса, чем SIGTERM. SIGKILL — самый небезопасный из трех вышеперечисленных способов уничтожения процесса, который завершает процесс без сохранения.

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

Каждый процесс в Linux имеет идентификатор процесса. Первым процессом, который запускается при загрузке системы Linux, является процесс инициализации, поэтому в большинстве случаев ему присваивается значение «1».

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

Список всех запущенных процессов Linux

Чтобы узнать все процессы и, соответственно, назначенный им pid, выполните следующую команду ps.

Пример вывода

Как насчет настройки приведенного выше вывода с использованием синтаксиса «процесс pidof».

Пример вывода

Еще один способ достичь вышеуказанной цели — следовать приведенному ниже синтаксису.

Пример вывода

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

Прежде чем мы продолжим и выполним команду kill, следует отметить несколько важных моментов:

  • Пользователь может завершить все свои процессы.
  • Пользователь не может завершить процесс другого пользователя.
  • Пользователь не может завершать процессы, используемые Системой.
  • Пользователь root может завершить процесс системного уровня и процесс любого пользователя.

Другой способ выполнить ту же функцию — выполнить команду pgrep.

Пример вывода

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

Приведенная выше команда уничтожит процесс с pid=3139, где PID – числовое значение процесса.

Другой способ выполнения той же функции можно переписать как.

Аналогично ‘kill -9 PID’ похож на ‘kill -SIGKILL PID’ и наоборот.

Как завершить процесс в Linux, используя имя процесса

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

Убить более одного процесса за раз.

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

Синтаксис:

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

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

С моей стороны пока все. Скоро я снова буду здесь с другой интересной и познавательной темой. А пока следите за обновлениями, подключитесь к Tecmint и будьте здоровы. Не забудьте оставить свой ценный отзыв в разделе комментариев.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.


Представьте себе: вы запустили приложение (будь то из своего любимого меню на рабочем столе или из командной строки) и начинаете использовать это запущенное приложение только для того, чтобы оно зависло, перестало работать или неожиданно отключилось. Вы пытаетесь снова запустить приложение, но оказывается, что исходное приложение так и не закрылось полностью.

Чем вы занимаетесь? Вы убиваете процесс. Но как? Хотите верьте, хотите нет, но ваш лучший выбор чаще всего находится в командной строке. К счастью, в Linux есть все инструменты, необходимые для того, чтобы вы, пользователь, могли убить ошибочный процесс. Однако, прежде чем вы немедленно запустите эту команду, чтобы убить процесс, вы должны сначала узнать, что это за процесс. Как вы решаете эту многоуровневую задачу? На самом деле это довольно просто… если вы знаете, какие инструменты есть в вашем распоряжении.

Позвольте мне познакомить вас с указанными инструментами.

Шаги, которые я собираюсь описать, будут работать практически на любом дистрибутиве Linux, будь то настольный компьютер или сервер. Я буду иметь дело исключительно с командной строкой, поэтому откройте терминал и приготовьтесь печатать.

Нахождение процесса

Первым шагом в уничтожении не отвечающего процесса является его обнаружение. Для поиска процесса я использую две команды: top и ps. Top — это инструмент, с которым должен познакомиться каждый администратор. С помощью top вы получите полный список запущенных в данный момент процессов. В командной строке введите top, чтобы просмотреть список запущенных процессов (рис. 1).


Рисунок 1. Команда top предоставляет много информации.

В этом списке вы увидите довольно важную информацию. Скажем, например, Chrome перестал отвечать на запросы. Согласно нашему верхнему дисплею, мы можем различить четыре запущенных экземпляра Chrome с идентификаторами процессов (PID) 3827, 3919, 10764 и 11679. Эта информация будет важна для одного конкретного метода убить процесс.

Несмотря на то, что top невероятно удобен, это не всегда самый эффективный способ получения необходимой информации. Допустим, вы знаете, что процесс Chrome — это то, что вам нужно убить, и вы не хотите просматривать информацию в режиме реального времени, предлагаемую top. Для этого вы можете использовать команду ps и отфильтровать вывод с помощью grep.Команда ps создает снимок текущего процесса, а grep выводит строки, соответствующие шаблону. Причина, по которой мы фильтруем ps с помощью grep, проста: если вы введете команду ps отдельно, вы получите снимок списка всех текущих процессы. Нам нужен только список, связанный с Chrome. Таким образом, эта команда будет выглядеть так:

Параметры вспомогательных следующие:

a = показать процессы для всех пользователей

u = показать пользователя/владельца процесса

x = также показывать процессы, не подключенные к терминалу

Параметр x важен, когда вы ищете информацию о графическом приложении.

Когда вы введете приведенную выше команду, вам будет предоставлено больше информации, чем вам нужно (рис. 2) для уничтожения процесса, но иногда это более эффективно, чем использование top.


Рисунок 2. Поиск необходимой информации с помощью команды ps.

Убить процесс

Теперь мы подошли к задаче убить процесс. У нас есть две части информации, которые помогут нам убить ошибочный процесс:

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

  • kill — убить процесс по идентификатору
  • killall — убить процесс по имени

Есть также разные сигналы, которые могут быть отправлены обеим командам уничтожения. Какой сигнал вы посылаете, будет определяться тем, какие результаты вы хотите получить от команды kill. Например, вы можете отправить сигнал HUP (повесить трубку) команде kill, которая эффективно перезапустит процесс. Это всегда мудрый выбор, когда вам нужно немедленно перезапустить процесс (например, в случае с демоном). Вы можете получить список всех сигналов, которые могут быть отправлены команде kill, введя команду kill -l. Вы найдете довольно большое количество сигналов (рис. 3).


Рисунок 3: Доступные сигналы уничтожения.

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

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

Примечание. Методы, показанные в этой статье, выполняются в Linux Mint 20.

Способы завершения процесса с помощью командной строки

Следующее включает три различные формы завершения процесса из командной строки в Linux Mint 20.

Чтобы убить процесс через терминал с помощью команды kill в Linux Mint 20, выполните следующие действия:

Сначала запустите терминал, щелкнув его значок на панели задач Linux Mint 20. Терминал Linux Mint 20 показан на следующем изображении:


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

Эта команда получит список всех процессов, запущенных в данный момент в вашей системе Linux Mint 20, вместе с их PID.


Список всех запущенных в данный момент процессов в моей системе показан на изображении ниже:


Теперь, после определения PID процесса, который вы хотите убить, вам нужно будет выполнить команду «kill». В этом сценарии мы завершим процесс Firefox с PID «1934», как вы можете убедиться на изображении, показанном выше.

Обратите внимание, что этот PID будет отличаться каждый раз, когда вы запускаете новый экземпляр процесса.Более того, на изображении, показанном выше, вы можете увидеть несколько PID, соответствующих процессу Firefox. Все они являются дочерними PID, кроме первого. Это причина использования «1934» в качестве PID процесса Firefox, который фактически является его первым PID.

Синтаксис команды kill следующий:

Здесь вам нужно будет заменить термин «PID» на PID процесса, который вы хотите убить. В этом примере мы заменили термин «PID» на «1934», т. е. PID процесса Firefox, как показано на изображении ниже:


Успешное выполнение этой команды немедленно уничтожит процесс Firefox, и вы больше не сможете найти его в списке запущенных в данный момент процессов в вашей системе.

Чтобы убить процесс через терминал с помощью команды «pkill» в Linux Mint 20, выполните описанный ниже метод:

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

Сначала пропингуйте веб-сайт с помощью следующей команды:


Пока эта команда «ping» выполняется в терминале, запустите другой экземпляр терминала, а затем выполните в терминале следующую команду:

Здесь замените термин «ProcessName» на имя процесса, который вы хотите убить с помощью команды «pkill». В этом примере мы заменили термин на «ping», так как мы хотим остановить процесс проверки связи.


Нажав клавишу Enter, вернитесь к экземпляру терминала, где выполнялась команда «ping», и вы заметите, что этот процесс был завершен, как показано на изображении ниже:


Чтобы убить процесс через терминал с помощью команды killall в Linux Mint 20, выполните следующие действия:

Команда killall может убить процесс вместе со всеми его дочерними процессами. Опять же, как и для команды «pkill», для команды «killall» не требуются идентификаторы PID; скорее, вы можете просто убить процесс, если знаете его имя.

После этого запустите новый экземпляр терминала, а затем введите следующую команду:

Здесь вы можете заменить термин «ProcessName» на имя процесса, который вам нужно убить с помощью команды «killall». В данном случае мы заменили термин на «ping», как показано на изображении ниже:


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


Заключение

Используя любой из трех методов, описанных в этой статье, вы можете убить сколько угодно процессов при использовании Linux Mint 20 и, следовательно, сохранить все системные ресурсы, которые эти процессы занимали.

Об авторе

Акса Ясин

Я целеустремленный профессионал в области информационных технологий и обожаю писать. Я технический писатель и люблю писать для всех разновидностей Linux и Windows.

Читайте также: