Как Узнать Список Процессов Linux с Помощью Командной Строки. Процессы в Linux, взаимодействие процессов Состояния процессов в linux

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

Что такое "Процесс"

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

В системе любой процесс может выполняться в нескольких режимах:

  1. Запуск. Данный режим означает, что процесс или уже работает, или запускается.
  2. Ожидание. В данном состоянии процесс ждет получения какой-либо команды, соответственно, он не выполняется.
  3. Остановлено. Все просто - процесс был остановлен принудительно пользователем. Чтобы он продолжил свою работу, ему нужно дать соответствующий сигнал.
  4. Мертвый. Он также называется "зомби-процессом". Это когда он был убит пользователем, но все равно отображается в списке. Чаще всего это происходит из-за того, что у него были смежные процессы, которые продолжили свою работу.

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

Разобравшись с основными понятиями, можно переходить непосредственно к инструкции. Ниже будет рассказано, как просмотреть список процессов Linux с помощью двух способов: через "Терминал" и с помощью программы с графическим интерфейсом.

Способ 1: "Диспетчер задач"

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

  1. Откройте системное меню.
  2. Нажмите по кнопке "Поиск".
  3. Впишите название программы "Диспетчер задач" (в некоторых дистрибутивах она называется "Системный монитор").
  4. Кликните ЛКМ по одноименной программе.

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

Способ 2: через "Терминал"

Список процессов в Linux можно также посмотреть и в "Терминале", который запускается по нажатию клавиш Ctrl+Alt+T. Для этого существует команда:

Все просто - запускаете "Терминал", вводите команду и нажимаете Enter. Однако не тут-то было. В выдаче вы увидите не полный список процессов, а лишь те, которые были запущены в рамках работы "Терминала".

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

Например, если вы хотите посмотреть весь список процессов, но без лидеров групп, используйте эту команду:

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

Может показаться, что выводится мало информации - только время работы (TIME) и команда (CMD). Все можно решить с помощью опции "-f":

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

Заключение

Вот мы и разобрались, как просмотреть список процессов в Linux. Как можно отметить, данная задача выполняется относительно просто, тем более существует несколько способов. Если вы хотите использовать гибкие параметры сортировки, то отлично подойдет для этих целей "Терминал". Если же отдаете предпочтение графическому интерфейсу, тогда пользуйтесь программой "Диспетчер устройств".


Не смотря на свою стабильность, некоторые приложения в Linux иногда виснут. Иногда приложения перестают отзываться или просто работают так медленно, что корректно закрыть их не получается. Один из способов «убить», запущенное приложение в Linux, это использование таких команд, как kill или killall. Рассмотрим, как использовать эти команды, находить PID процесса и посылать сигнал SIGKILL.

Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

Ps axu | grep gcalctool

Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:

$ ps axu | grep gcalctool yuriy 25587 0.0 0.0 10636 884 pts/2 S+ 10:20 0:00 grep --color=auto gcalctool

То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps .

Если процесс gcalctool запущен, то мы получим:

Yuriy@yuriy-NIX:~$ ps axu | grep gcalctool yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool yuriy 25624 0.0 0.0 10640 884 pts/2 S+ 10:21 0:00 grep --color=auto gcalctool

Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool ». Число 25609 и есть идентификатор (PID) процесса gcalctool.

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

$ pidof gcalctool 25609

«Убиваем» процесс командой kill

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

Kill 25609

Вообще команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l . Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 25609, выполните в командой строке:

Kill -9 25609

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

Убиваем процессы командой killall

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:

Killall gcalctool

Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s . Например:

Killall -s 9 gcalctool

Заключение

Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):

Sudo kill 123

Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1 , залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7 .

Справку по использованию любой команды можно получить командой man:

Man ps man grep man pidof man kill man killall

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

Команды управления процессами

Чтобы увидеть список запущенных процессов, нужно ввести команду

Ps-A
В результате выполнения данной команды будет выведен список запущенных процессов Linux с указанием имени и PID (персональный идентификатор), используемого процессорного времени.

Ввод этой же команды с ключом

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

Используя различные ключи команды ps, можно получить и другую информацию о запущенных процессах: ID процесса-родителя, значение приоритета, статус (выполняется, спит, состояние подкачки, остановлен, процесс-зомби), доля памяти и процессорного времени в процентах, время старта и т.д.

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

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

Значение приоритета процесса может изменяться от -20 (высокий) до +20 (низкий). По умолчанию запускаемому процессу выставляется приоритет родительского процесса. Для изменения приоритета запускаемого процесса используется команда

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

Значения аргумента команды nice от -20 до +19. Команда

Renice
изменяет приоритет запущенных процессов: renice -3522 -uuser– увеличение приоритета на 3 для процессов пользователя user и с идентификатором 522.

Выставление отрицательных приоритетов доступно только суперпользователю.

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

  • kill-9 688 – завершение процесса с PID688 в любом случае (сигнал kill);
  • kill -15 688 – завершение процесса с PID688 программно (сигнал term);
  • kill -19 688 – приостановка выполнения процесса с PID688 (сигнал stop).
Другие опции и сигналы команд управления процессами можно узнать, вызвав справку по данных командам, иногда в них встречаются различия, в зависимости от дистрибутива.

«Зомби» в списке запущенных процессов Linux

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

Просмотреть родителей процессов-зомби можно командой

Ps –lax
Для того, чтобы убрать «зомби» из списка запущенных процессов Linux надо завершить родительский процесс.

Процесс – это системный термин, который используется для описания приложения или программы. К примеру, когда мы открываем веб-браузер Google Chrome, мы можем сказать, что это процесс ответственный за запуск/выполнение Chrome, который был запущен и выполняется до тех пор пока мы не закроем браузер. Даже когда мы выполняем любую bash команду, появляется новый процесс. Если мы откроем одно и тоже приложение дважды, появится два процесса. В этом руководстве вы узнаете, как узнать список процессов Linux с помощью командной строки. Это необходимо, если вы хотите узнать какие процессы запущены в данный момент, каким пользователем запущен процесс или просто узнать какой из процессов использует больше всего ресурсов сервера.

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

  • Доступ к командной строке

Шаг 1 - Просмотр списка процессов Linux

Список терминов которые вам необходимо знать перед прочтением руководства:

  1. PID – идентификатор процесса. Каждый процесс имеет свой 5 значный код. Эти числа могут закончиться и начать повторяться, но в любое другое время у каждого процесса свой уникальный PID.
  2. PPID – родительский идентификатор процесса. Идентификатор процесса который запустил этот конкретный процесс.

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

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

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

  • h или ? – отобразить окно помощи со всеми командами и другой полезной информацией.
  • space – нажатие пробела на вашей клавиатуре вручную обновит таблицу процессов.
  • f – добавить поле для отображения в новом окне или удалить определенные поля в таблице.
  • q – выйти из приложения или дополнительных окон принадлежащих к нему. К примеру, после использования функции f .
  • l – включить отображение информации о средней загрузке и времени работы.
  • m – включить отображение информации о памяти.
  • P (Shift + p) – отсортировать процессы по количеству используемой памяти.
  • s – изменить задержку между обновлениями списка (вам будет предложено ввести значение в секундах).

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

  • -d delay – укажите задержку между обновлениями вместо delay .
  • -n number – обновить страницу определенное число раз и выйти из приложения. Вместо number введите значение.
  • -p pid – отображать и контролировать процессы только с определенным (pid ).
  • -q – обновлять без какой-либо задержки.

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

Также, вы можете использовать команду man top для просмотра полезной информации об этих командах.

Другие полезные применения команды top:

  • Для отображения процессов определенного пользователя, вы можете использовать это: top -u user
  • Для закрытия процесса, нажмите в окне приложения top клавишу k на клавиатуре. Далее, вам будет предложено вписать идентификатор процесса (pid ), который вы хотите закрыть.
  • Вы можете сохранить текущие настройки команды top используя сочетание клавиш Shift + W . Эти настройки будут сохранены в директории /root/.toprc

ps – Еще одна полезная команда для отображения списка процессов Linux. Вот несколько опций часто используемых с этой командой:

  • -e – отображение всех процессов.
  • -f – полное форматирование списка.
  • -r – отображение запущенных процессов.
  • -u – опция для показа процессов определенного пользователя или пользователей.
  • –pid – опция для фильтрации процессов по PID.
  • –ppid – опция для фильтрации процессов по родительскому PID.
  • -C – фильтровать процессы по их имени или команде.
  • -o – отображение информации, связанной с пробелом или списком ключевых слов, разделенных запятыми.

Вот несколько полезных примеров того, как вы можете использовать команду ps:

  1. ps -ef – отобразит список процессов, которые запущены прямо сейчас (еще одна похожая команда ps aux)
  2. ps -f -u user1,user2 – отобразит все процессы основанные на предоставленном UID (ID пользователя или имени пользователя).
  3. ps -f –pid id – отобразит процессы основанные на pid. Введите идентификатор процесса вместо id . Может быть использована вместе с PPID .
  4. ps -C command/name – фильтрация процессов по их имени или команде.
  5. ps aux –sort=-pcpu,+pmem – отобразит процессы потребляющие большое количество ресурсов ЦПУ.
  6. ps -e -o pid,uname,pcpu,pmem,comm – используется для фильтрации определенных столбцов с последующим их отображением.
  7. ps -e -o pid,comm,etime – эта команда отобразит время прошедшее с запуска процесса.

Шаг 2 - Закрытие и расстановка приоритета процессов

В предыдущем шаге мы уже рассказывали о том, как можно закрыть процесс с помощью команды top. Этот же результат может быть достигнут при помощи команды kill. К примеру:

kill pid – впишите вместо PID идентификатор процесса, который вы хотите закрыть. Если процесс довольно упрямый и не хочет быть закрыт, вы можете использовать команду: kill -9 pid.

Еще одной командой для управления процессами является NICE. Обычно она используется для расстановки приоритетов для процессов, когда на вашей системе их запущено действительно много. В этом случае ваша система узнает какие из процессов являются важными и установит для них более высокий приоритет. Проще говоря, она помогает вам расставить приоритеты процессов от более важных к менее важным. Система будет запускать процесс, который имеет меньший приоритет только в том случае, если для этого имеется достаточно ресурсов ЦПУ. Этой команде можно задать значение от -20 до 19 , чем меньше значение, тем выше приоритет процесса. Стандартный приоритет для всех приложений 0 . Основным синтаксисом будет:

  • nice -n ‘значение’ process name – Пример: nice -n 10 name. Это начнет новый процесс с выбранным приоритетом (10 ).
  • Если вы хотите задать значение приоритета для уже запущенного приложения используйте: renice ‘значение’ -p ‘PID’ – Пример: renice ’10’ -p ‘54125’.

Заключение

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

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

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

В этой статье будет затронута обширная тема, мы рассмотрим такие возможности:

  • Просмотр запущенных процессов
  • Просмотр информации о процессах
  • Поиск процессов в Linux
  • Изменение приоритета процессов
  • Завершение процессов
  • Ограничение памяти доступной процессу

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

Начнем с того, что разберемся в терминах. По сути, процесс - это каждая программа. Как я уже говорил для каждой запускаемой программы создается отдельный процесс. В рамках процесса программе выделяется процессорное время, оперативная память и другие системные ресурсы. У каждого процесса есть свой идентификатор, Proccess ID или просто PID, по ним, чаще всего и определяются процессы Linux. PID определяется неслучайно, как я уже говорил, программа инициализации получает PID 1, а каждая следующая запущенная программа - на единицу больше. Таким образом PID пользовательских программ доходит уже до нескольких тысяч.

На самом деле, процессы Linux не настолько абстрактны, какими они вам сейчас кажутся. Их вполне можно попытаться пощупать. Откройте ваш файловый менеджер, перейдите в корневой каталог, затем откройте папку /proc. Видите здесь кучу номеров? Так вот это все - PID всех запущенных процессов. В каждой из этих папок находится вся информация о процессе.

Например, посмотрим папку процесса 1. В папке есть другие под каталоги и много файлов. Файл cmdline содержит информацию о команде запуска процесса:

cat /proc/1/cmdline

/usr/lib/systemd/systemd

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

Управление процессами в Linux

В Linux есть очень большое количество утилит для решения различных задач по управлению процессами. Это и такие многофункциональные решения, как htop, top, а также простые утилиты, например, ps, kill, killall, who и т д. Я не буду рассматривать в этой статье графические утилиты, и top тоже рассматривать не буду. Первое потому что слишком просто, второе - потому что htop лучше. Мы остановимся на работе с программой htop и ее аналогами в форме утилит в стиле GNU, одна утилита - одна функция.

Давайте установим htop, если она у вас еще не установлена. В Ubuntu это делается так:

sudo apt install htop

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

Посмотреть запущенные процессы

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

Открыв htop, мы сразу видим список запущенных процессов. Конечно, здесь отображены не все процессы linux, их-то в системе очень много, вы уже знаете, все они на один экран не поместятся. По умолчанию выводятся процессы, запущенные от имени вашего пользователя:

Вы можете увидеть такую информацию о процессе:

  • PID - идентификатор процесса
  • USER - пользователь, от которого был запущен процесс
  • PRI - приоритет процесса linux на уровне ядра (обычно NI+20)
  • NI - приоритет выполнения процесса от -20 до 19
  • S - состояние процесса
  • CPU - используемые ресурсы процессора
  • MEM - использованная память
  • TIME - время работы процесса

К отображению можно добавить и дополнительные параметры, но эти главные. Добавить параметры можно с помощью меню Setup. Там все очень просто, читайте подсказки и следуйте указаниям. Например, добавлен параметр PPID:

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

Также есть интересная возможность разместить процессы в виде дерева. Вы сможете увидеть, каким процессом был запущен тот или иной процесс. Для отображения дерева нажмите кнопку F5:

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

Рассмотрим основные опции, которые будем использовать:

  • -e - вывести информацию обо всех процессах
  • -a - вывести информацию обо всех наиболее часто запрашиваемых процессах
  • -t - показывать только процессы из этого терминала
  • -p - показывать информацию только об указанном процессе
  • -u - показывать процессы только определенного пользователя

Одним словом, чтобы посмотреть все активные на данный момент процессы в linux, используется сочетание опций aux:

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

ps aux --sort=%mem

Список будет отсортирован в обратном порядке, внизу значения больше, вверху - меньше. Если нужно в обратном порядке, добавьте минус:

ps aux --sort=-%cpu

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

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

Поиск процессов в Linux

Список процессов, это хорошо. Но иногда, когда какой-нибудь процесс завис и нужно убить процесс Linux или нам нужно провести с ним какие-либо действия, нужно выделить этот процесс из списка, узнать его PID и информацию о нем.

Чтобы найти процесс linux в htop можно использовать кнопку F3. Нажмите F3 и наберите нужное слово. Дальше чтобы перейти к следующему вхождению нажимайте F2 или Esc для завершения поиска:

Для поиска процессов в htop можно использовать также фильтр htop. Нажмите F4, введите слово и будут выведены только процессы linux, имя которых включает это слово.

В утилите ps фильтрации нет, но зато мы можем использовать утилиту grep, перенаправив вывод ps на нее чтобы найти процесс linux:

ps aux | grep chromium

Это очень часто употребляемая команда.

Изменение приоритета процессов

Приоритет процесса linux означает, насколько больше процессорного времени будет отдано этому процессу по сравнению с другими. Так мы можем очень тонко настроить какая программа будет работать быстрее, а какая медленнее. Значение приоритета может колебаться от 19 (минимальный приоритет) до -20 - максимальный приоритет процесса linux. Причем, уменьшать приоритет можно с правами обычного пользователя, но чтобы его увеличить нужны права суперпользователя.

В htop для управления приоритетом используется параметр Nice. Напомню, что Priv, это всего лишь поправка, она в большинстве случаев больше за Nice на 20. Чтобы изменить приоритет процесса просто установите на него курсор и нажимайте F7 для уменьшения числа (увеличения приоритета) или F8 - для увеличения числа.

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

nice -n 10 apt-get upgrade

Или изменить приоритет для уже существующего по его pid:

renice -n 10 -p 1343

Завершение процессов в Linux

Если процесс завис и не отвечает, его необходимо завершить. В htop, чтобы убить процесс Linux, просто установите курсор на процесс и нажмите F9:

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

  • SIGKILL - попросить процесс сохранить данные и завершится
  • SIGTERM - завершить процесс немедленно, без сохранения

Вообще сигналов есть несколько десятков, но мы не будем их рассматривать. Отправим сигнал SIGKILL:

Также можно воспользоваться утилитой kill:

Также можно уничтожить процесс по имени:

killall chromium

Ограничение процессов

Управление процессами в Linux позволяет контролировать практически все. Вы уже видели что можно сделать, но можно еще больше. С помощью команды ulimit и конфигурационного файла /etc/security/limits.conf вы можете ограничить процессам доступ к системным ресурсам, таким как память, файлы и процессор. Например, вы можете ограничить память процесса Linux, количество файлов и т д.

Запись в файле имеет следующий вид:

<домен> <тип> <элемент> <значение>

  • домен - имя пользователя, группы или UID
  • тип - вид ограничений - soft или hard
  • элемент - ресурс который будет ограничен
  • значение - необходимый предел

Жесткие ограничения устанавливаются суперпользователем и не могут быть изменены обычными пользователями. Мягкие, soft ограничения могут меняться пользователями с помощью команды ulimit.

Рассмотрим основные ограничения, которые можно применить к процессам:

  • nofile
  • as - максимальное количество оперативной памяти
  • stack - максимальный размер стека
  • cpu - максимальное процессорное время
  • nproc - максимальное количество ядер процессора
  • locks - количество заблокированных файлов
  • nice - максимальный приоритет процесса

Например, ограничим процессорное время для процессов пользователя sergiy:

sergiy hard nproc 20

Посмотреть ограничения для определенного процесса вы можете в папке proc:

cat /proc/PID/limits

Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 204800 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 23562 23562 processes
Max open files 1024 4096 files
Max locked memory 18446744073708503040 18446744073708503040 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 23562 23562 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us

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

Вот опции команды:

  • -S - мягкое ограничение
  • -H - жесткое ограничение
  • -a - вывести всю информацию
  • -f - максимальный размер создаваемых файлов
  • -n - максимальное количество открытых файлов
  • -s - максимальный размер стека
  • -t - максимальное количество процессорного времени
  • -u - максимальное количество запущенных процессов
  • -v - максимальный объем виртуальной памяти

Например, мы можем установить новое ограничение для количества открываемых файлов:

Теперь смотрим:

Установим лимит оперативной памяти:

ulimit -Sv 500000

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

Выводы

Вот и все. Теперь управление процессами в Linux не вызовет у вас проблем. Мы рассмотрели очень даже подробно эту тему. Если у вас остались вопросы или есть предложения по дополнению статьи, пишите в комментариях!