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

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

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

Завершить процесс в Linux (2023 г.)

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

Что такое процессы в Linux

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

Убить процесс через командную строку в Linux

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

Сигналы завершения

Когда вы пытаетесь убить процесс из GUI или CLI в Linux, ядро ​​посылает процессу сигнал уничтожения. Процесс действует соответственно, в зависимости от принятого сигнала. Каждому из этих сигналов присваивается определенный номер, который программа может быстро понять. Существует множество типов сигналов завершения, но здесь мы объяснили только основные:

SignalNumeric ValueDescriptionSIGHUP1Расшифровывается как ‘Signal Hangup’
Отправляется, когда терминал закрыт.SIGINT2 Это означает «Прерывание сигнала».
Отправляется, когда пользователь завершает процесс.SIGKILL9 Расшифровывается как «Signal Kill».
Отправляется, когда нужно немедленно остановить процесс.
Отправляется, когда нужно завершить процесс и высвободить потребленные ресурсы SIGSTOP19 — для ARM, x86
17 – для АЛЬФА
23 – для МИПС
24 – для PA-RISC означает «Сигнал Стоп»
Отправляется, когда нужно приостановить процесс и возобновить его позже. Чаще всего используются сигналы SIGKILL (9) и SIGTERM (15).

Определите идентификаторы процессов

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

PS

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

ПС | grep

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

пидоф

Завершите процесс командой kill

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

убийство

Параметр является необязательным, и команда kill по умолчанию отправляет сигнал SIGTERM (15). Вы можете отправить любой другой сигнал в соответствии с его числовым значением или фактическим именем сигнала из таблицы выше.

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

Если вам неудобно искать идентификатор процесса, вы можете использовать команду pkill. Он ищет процессы, соответствующие шаблону, а затем уничтожает их. Синтаксис использования команды pkill:

убить

Некоторые из распространенных параметров для сопряжения с командой pkill:

OptionDescription -nВыбирает только самые последние процессы, соответствующие идентификатору процесса -uВыбирает процессы, принадлежащие определенному пользователю -xВыбирает процессы, точно соответствующие шаблону

Это особенно важно, когда несколько пользователей запускают разные экземпляры одной и той же программы в одной и той же системе, и один из экземпляров начинает вести себя неожиданно. Например, на изображении ниже мы уничтожаем экземпляр «gedit», принадлежащий пользователю «intel», с помощью команды pkill в Linux:

pkill в Intel gedit

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

Команда killall работает аналогично команде kill, но уничтожает все процессы, имя которых соответствует имени процесса, независимо от пользователя. По умолчанию он отправляет сигнал SIGTERM, если не указано иное. Интересно отметить, что команда killall никогда не может уничтожить себя, но может завершить работу других экземпляров команды killall. Синтаксис использования команды killall:

убить всех

Вот некоторые из опций для сопряжения с командой killall:

OptionDescription -rИнтерпретирует имя_процесса как шаблон регулярного выражения, а затем уничтожает процессы, соответствующие шаблону. -Убивает указанный процесс, принадлежащий указанному владельцу. началось после) указанное время .

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

убить -v спать

Завершите процесс Linux с помощью команды top/htop.

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

пушка

Понимание результатов:

Основной вывод вышеуказанной команды разделен на столбцы:

  • PID — отображает идентификатор запущенного процесса.
  • Пользователь — показывает владельца процесса
  • PR — показывает значение приоритета процесса, назначенное операционной системой
  • NI — отображает приятные значения, которые похожи на присвоение значений, отстоящих от пользователя, для ручного управления приоритетом задачи.
  • VIRT — показывает количество виртуальной памяти, используемой процессом.
  • RES — показывает объем физической памяти, используемой процессом.
  • SHR — показывает объем памяти, совместно используемой другими процессами.
  • S – показывает текущее состояние процесса, которое может быть:
    • Д – непрерывный сон
    • Р – бег
    • С — спать
    • Т — остановился
    • З — зомби
  • %CPU — показывает количество ЦП, которое процесс использует в процентах.
  • %MEM — показывает количество оперативной памяти, используемой процессом в процентах.
  • ВРЕМЯ+ — отображает общее время выполнения процесса
  • Команда — показывает, какая команда была вызвана для процесса.
  • Если вы не знаете идентификатор процесса задачи, которую хотите завершить, либо прокрутите список с помощью клавиш со стрелками, либо найдите имя процесса в таблице процессов Linux.

    Чтобы найти имя процесса, нажмите «L» на клавиатуре и введите имя процесса, который вы хотите найти. Когда вы найдете гнусный процесс, нажмите «k» на клавиатуре, чтобы убить процесс. Теперь введите идентификатор процесса или оставьте его для текущего выделенного процесса и нажмите «ENTER». Затем введите сигнал завершения и нажмите «ENTER», чтобы выйти из программы. Чтобы вернуться к терминалу, нажмите «k» на клавиатуре.

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

    sudo apt install -i htop

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

    хтоп

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

    Убейте процесс через системный монитор в Linux

    Если вам сложно использовать метод командной строки, вы можете использовать встроенный инструмент мониторинга системы, доступный в каждом дистрибутиве Linux. Чтобы узнать, как это работает, откройте системный монитор из меню «Приложения» и выполните следующие действия.

    1. Когда откроется системный монитор, вы увидите вверху три вкладки с именами — «Процессы», «Ресурсы» и «Файловая система». Для управления процессами перейдите на вкладку «Процессы». Здесь вы увидите все запущенные в данный момент процессы. Нажмите «CTRL+F», чтобы найти имя процесса. Нажмите на название процесса, который хотите завершить, и нажмите «Завершить процесс».

    2. Затем вам будет предложено подтвердить, хотите ли вы завершить процесс или нет. Нажмите большую красную кнопку «Завершить процесс», чтобы завершить процесс в Linux.

    Часто задаваемые вопросы

    Как остановить все процессы в Linux?

    Если вам нужно убить все процессы (кроме оболочки входа в систему, запуска и процессов, связанных с ядром) для определенного пользователя в Linux, используйте либо команду pkill, либо команду killall в соответствии с синтаксисом:

    в pkill

    в убийстве

    Если вам нужно убить каждый процесс для каждого пользователя, включая систему инициализации, нажмите клавиши «ALT + Prt Sc + o» на клавиатуре.

    Можно ли завершить процесс?

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

    Что такое фоновые процессы в Linux?

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

    Что такое зомби-процесс?

    Процесс, который был убит пользователем, но все еще занимает память, известен как процесс-зомби.

    Что делает CTRL + Z в Linux?

    Когда вы используете CTRL + Z в Linux, он отправляет сигнал SIGTSTP, который приостанавливает процесс и переводит его в фоновый режим. Когда процесс находится в приостановленном состоянии в фоновом режиме, вы не можете его остановить, пока он не вернется на передний план.

    Легко убивать процессы в Linux

    Убить процесс накопления памяти — очень важная задача, которую должен освоить каждый пользователь. В этой статье мы также показали метод командной строки, включая такие команды, как killall и pkill, а также методы с графическим интерфейсом для уничтожения процессов в Linux. Мы даже подробно описали, как использовать популярные инструменты, такие как top и htop, для управления процессами на вашем ПК с Linux. Если у вас возникнут какие-либо проблемы при использовании этих инструментов уничтожения процессов, сообщите нам об этом в комментариях ниже.

    Поделиться в соцсетях