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

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


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


Что такое процесс?


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


Каждый из процессов может находиться в одном из таких состояний:


  • Запуск - процесс либо уже работает, либо готов к работе и ждет, когда ему будет дано процессорное время;

  • Ожидание - процессы в этом состоянии ожидают какого-либо события или освобождения системного ресурса. Ядро делит такие процессы на два типа - те, которые ожидают освобождения аппаратных средств и приостановление с помощью сигнала;

  • Остановлено - обычно, в этом состоянии находятся процессы, которые были остановлены с помощью сигнала;

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

А теперь давайте перейдем ближе к практике и поговорим о том, как узнать запущенные процессы linux.


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


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


$ ps опции


$ ps опции | grep параметр


Во втором варианте мы используем утилиту grep для того, чтобы отобрать нужные нам процессы по определенному критерию. Теперь рассмотрим опции утилиты. Они делятся на два типа - те, которые идут с дефисом Unix и те, которые используются без дефиса - BSD. Лучше пользоваться только опциями Unix, но мы рассмотрим и одни и другие. Заметьте, что при использовании опций BSD, вывод утилиты будет организован в BSD стиле.


  • -A, (a) - выбрать все процессы;

  • -a - выбрать все процессы, кроме фоновых;

  • -d, (g) - выбрать все процессы, даже фоновые, кроме процессов сессий;

  • -N - выбрать все процессы кроме указанных;

  • - выбирать процессы по имени команды;

  • -G - выбрать процессы по ID группы;

  • -p, (p) - выбрать процессы PID;

  • --ppid - выбрать процессы по PID родительского процесса;

  • -s - выбрать процессы по ID сессии;

  • -t, (t) - выбрать процессы по tty;

  • -u, (U) - выбрать процессы пользователя.

Опции форматирования:


  • - отображать информацию планировщика;

  • -f - вывести максимум доступных данных, например, количество потоков;

  • -j, (j) - вывести процессы в стиле Jobs, минимум информации;

  • -M, (Z) - добавить информацию о безопасности;

  • -o, (o) - позволяет определить свой формат вывода;

  • --sort, (k) - выполнять сортировку по указанной колонке;

  • -L, (H)- отображать потоки процессов в колонках LWP и NLWP;

  • -m, (m) - вывести потоки после процесса;

  • -V, (V) - вывести информацию о версии;

  • -H - отображать дерево процессов linux;

Теперь, когда вы знаете синтаксис и опции, можно перейти ближе к практике и посмотреть запущенные процессы в Linux. Чтобы просто посмотреть процессы в linux в текущей оболочке используйте команду без параметров:



 ps



Все процессы, кроме лидеров групп, в том же режиме отображения:



 ps -A 




Все процессы, включая фоновые и лидеры групп:



 ps -d




Чтобы вывести больше информации о процессах используйте опцию -f:



 ps -f






При использовании опции -f команда выдает такие колонки:


  • UID - пользователь, от имени которого запущен процесс;

  • PID - идентификатор процесса;

  • PPID - идентификатор родительского процесса;

  • C - процент времени CPU, используемого процессом;

  • STIME - время запуска процесса;

  • TTY - терминал, из которого запущен процесс;

  • TIME - общее время процессора, затраченное на выполнение процессора;

  • CMD- команда запуска процессора;

  • LWP - показывает потоки процессора;

  • PRI - приоритет процесса.

Например, также можно вывести подробную информацию обо всех процессах:



 ps -Af




Больше информации можно получить, использовав опцию -F:



 ps -Fe






Если вы хотите получить еще больше информации, используйте вместо -f опцию -l:



 ps -l





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



 ps -fu root





С помощью опции -H можно отобразить дерево процессов:



 ps -fHu root




Если вас интересует информация только об определенном процессе, то вы можете использовать опцию -p и указать pid процесса linux:



 ps -fp 1




Через запятую можно указать несколько PID:



 ps -fp 1,2,3




Опция позволяет фильтровать процессы по имени, например, выберем только процессы chrome:



 ps -fC chrome




Дальше можно использовать опцию -L чтобы отобразить информацию о процессах:



 ps -fL




Очень интересно то, с помощью опции -o можно настроить форматирование вывода, например, вы можете вывести только pid процесса linux и команду:



 ps -o pid,comm




Вы можете выбрать такие колонки для отображения: pcpu, pmem, args, comm, cputime, pid, gid, lwp, rss, start, user,vsize,priority. Для удобства просмотра можно отсортировать вывод программы по нужной колонке, например, просмотр процессов linux, которые используют больше всего памяти:



 ps -Fe --sort rss




Или по проценту загрузки cpu:



 ps -FA --sort pcpu




Еще одна опция - M, которая позволяет вывести информацию про права безопасности и флаги SELinux для процессов:



 ps -eM




Общее количество запущенных процессов Linux можно узнать командой:



 ps -e | wc




Мы рассмотрели все основные возможности утилиты ps. Дальше вы можете поэкспериментировать с ее параметрами и опциями чтобы найти нужные комбинации, также можно попытаться применить опции BSD.


Выводы


Команда ps может быть очень полезной если система перегружена и вам необходимо срочно узнать запущенные процессы linux чтобы освободить память или ресурсы процессора. Интерактивные средства не всегда могут помочь, потому что они потребляют слишком много ресурсов. С другой стороны ps дает большую гибкость поскольку утилита имеет множество опций и параметров. Во всяком случае теперь вы знаете как вывести список процессов linux. Если остались вопросы, спрашивайте в комментариях!



Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0