Просмотр списка процессов в Linux

Содержание

Работа с процессами в Linux. Команды для управления системными процессами в системе Линукс

Просмотр списка процессов в Linux

: 09.11.2017

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

Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:

Мы увидим, примерно, следующее:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND root       661  0.0  0.0   4072     8 tty1     Ss+  Jul03   0:00 /sbin/mingetty root       662  0.0  0.0   4072     8 tty2     Ss+  Jul03   0:00 /sbin/mingetty root     16355  0.0  0.

0 171636  3308 pts/0    S    15:46   0:00 sudo su root     16366  0.0  0.0 140896  1556 pts/0    S    15:46   0:00 su root     16368  0.0  0.0 108316  1944 pts/0    S    15:46   0:00 bash

root     18830  0.0  0.

0 110244  1172 pts/0    R+   16:20   0:00 ps u

* где:

  • USER — учетная запись пользователя, от которой запущен процесс.
  • PID — идентификатор процесса.
  • %CPU — потребление процессорного времени в процентном эквиваленте.
  • %MEM — использование памяти в процентах.
  • VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
  • RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
  • TTY — терминал, из под которого был запущен процесс.
  • STAT — текущее состояние процесса. Могут принимать значения:
    1. R — выполнимый процесс;
    2. S — спящий;
    3. D — в состоянии подкачки на диске;
    4. T — остановлен;
    5. Z — зомби.
    6. W — не имеет резидентных страниц;
    7. < — высоко-приоритетный;
    8. N — низко-приоритетный;
    9. L — имеет страницы, заблокированные в памяти.
  • START — дата запуска процесса.
  • TIME — время запуска процесса.
  • COMMAND — команда, запустившая процесс.

Ключи

Ключ Описание
-AВсе процессы.
-aЗапущенные в текущем терминале, кроме главных системных.
-dВсе, кроме главных системных процессов сеанса.
-eВсе процессы.
fПоказать дерево процессов с родителями.
TВсе на конкретном терминале.
aВсе, связанные с текущим терминалом и терминалами других пользователей.
rСписок только работающих процессов.
xОтсоединённые от терминала.
uПоказать пользователей, запустивших процесс.

Примеры

Поиск процесса с помощью grep:

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

Останавливаем процесс по его PID:

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

Остановить все процессы с именем nginx:

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

Подробная информация о процессе

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

Примеры использования /proc/

Подробный вывод статуса:

Адрес в ячейках оперативной памяти, которые занял процесс:

Команда, которой был запущен процесс:

Символьная ссылка на рабочий каталог процесса:

Символьная ссылка на исполняемый файл, запустивший процесс:

Увидеть ссылки на дескрипторы открытых файлов, которые затрагивает процесс:

Подробное описание на сайте man7.org.

Потребление ресурсов процессами

Для просмотра статистики потребления ресурсов используем утилиту top:

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

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 21059 root      20   0  157884   2280   1496 R  18,8  0,1   0:00.03 top     1 root      20   0  190996   2964   1652 S   0,0  0,1   6:49.

99 systemd     2 root      20   0       0      0      0 S   0,0  0,0   0:01.78 kthreadd     3 root      20   0       0      0      0 S   0,0  0,0   0:24.

75 ksoftirqd/0

    5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H

* где:

  • PID — идентификатор процесса.
  • USER — имя учетной записи, от которой запущен процесс.
  • PR — приоритет процесса.
  • NI — приоритет, выставленной командой nice.
  • VIRT — объем виртуальной памяти, потребляемый процессом.
  • RES — объем используемой оперативной памяти.
  • SHR — количество разделяемой памяти, которое используется процессом.
  • S — состояние процесса.
  • %CPU — процент использования процессорного времени.
  • %MEM — потребление оперативной памяти в процентах.
  • TIME — использование процессорного времени в секундах.
  • COMMAND — команда, которая запустила процесс.

Была ли полезна вам эта инструкция?

Да            Нет

Источник: //www.dmosk.ru/miniinstruktions.php?mini=processes-linux

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

Просмотр списка процессов в Linux

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

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

  • Что такое процесс?
  • Список процессов Linux
  • Выводы

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

Процесс Linux – это экземпляр программы, запущенный в памяти. Все процессы можно разделить на обычные и фоновые. Более подробно об этом написано в статье управление процессами Linux.

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

Для этого каждому процессу присваивается PID (Proccess Identificator).

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

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

А теперь давайте перейдем ближе к практике и поговорим о том, как узнать запущенные процессы 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.

Выводы

Источник: //losst.ru/spisok-protsessov-linux

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

Просмотр списка процессов в 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 – эта команда отобразит время прошедшее с запуска процесса.

Мы рекомендуем посетить эту страницу для получения более подробной информации об использовании команды ps.

Шаг 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. Также вы познакомились с командами позволяющими управлять данными процессами. С данными командами существует множество комбинаций, поэтому не бойтесь экспериментировать.

Источник: //www.hostinger.ru/rukovodstva/kak-uznat-spisok-protsessov-linux

Основы Linux от основателя Gentoo. Часть 2 (3/5): Управление процессами

Просмотр списка процессов в Linux
В этом отрывке рассмотрены команды управления процессами. Вы научитесь замораживать процессы, размораживать, отправлять в фоновый режим, изменять приоритет, просматривать запущенные процессы и жестоко их убивать. Введено понятие сигналов. Рассмотрены такие команды, как bg, fg, jobs, kill, nohup, nice, renice, ps и top.

Запуск xeyes

Для изучения управления процессами, какой-нибудь процесс необходимо сначала запустить. Убедитесь, что у вас запущен X (графический сервер — прим. пер.) и выполните следующую команду:

$ xeyes -center red

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

Остановка процесса

Чтобы вернуть приглашение, вы должны нажать Control-C (часто пишется как Ctrl-C или C):

Вы получили назад свое приглашение, но и окно xeyes исчезло. Фактически, процесс был «убит». Вместо завершения по Control-C, мы можем просто остановить процесс с помощью Control-Z:

$ xeyes -center red
Control-Z

[1]+ Stopped xeyes -center red $

На этот раз вы получите приглашение bash'a, а окно xeyes останется сверху. Если вы с ним немного поиграете, возможно заметите, что глаза заморожены на одном месте. Если окно xeyes будет перекрыто другим окном и затем снова открыто, вы увидите, что оно даже не перерисовалось. Процесс не делает ничего. Он на самом деле остановлен.

fg и bg

Чтобы процесс «растормошить» и запустить обратно, мы можем вывести его на передний план используя команду fg (от англ. foreground — прим. пер.):

$ fg (test it out, then stop the process again)

Control-Z

[1]+ Stopped xeyes -center red $

А теперь продолжим его в фоне с помощью команды bg (от англ. backgroud — прим. пер.):

$ bg [1]+ xeyes -center red &

$

Прекрасно! Процесс xeyes сейчас запущен в фоновом режиме, а мы снова имеем приглашение bash.

Использование “&”

Если нам нужно сразу запустить xeyes в фоновом режиме (вместо использования Control-Z и bg), мы можем просто добавить “&” (амперсанд) в конец команды xeyes:

$ xeyes -center blue &
[2] 16224

Несколько фоновых процессов

Теперь в фоне у нас одновременно работают красные и синие xeyes. Мы можем просмотреть список заданий с помощью jobs:

$ jobs -l
[1]- 16217 Running xeyes -center red &[2]+ 16224 Running xeyes -center blue &

Число в левой колонке — это порядковый номер задания, который bash присваивает ему при запуске. Плюс (+) у второго задания значит, что это «текущее задание», оно будет выведено на передний план при вводе fg.

Вы также можете вывести на передний план конкретное задание указывая его номер; например, fg 1 сделает таковым красный xeyes. Следующая колонка это идентификатор процесса или сокращенно pid, любезно добавленный в вывод благодаря опции -l.

Наконец, состояние обоих процессов «Running» (выполняется) и их командная строка справа.

Введение в сигналы

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

Это то, что происходит на самом деле, когда вы нажимаете Control-C, Control-Z, или используете bg и fg — вы указываете bash отправить процессу определенный сигнал.

Сигналы также можно отправить с помощью команды kill указав ей как параметр id процесса (pid):

$ kill -s SIGSTOP 16224
$ jobs -l
[1]- 16217 Running xeyes -center red &[2]+ 16224 Stopped (signal) xeyes -center blue

Как можно заметить, kill не обязательно «убивает» процесс, хотя может и это. Используя опцию -s, kill может отправить процессу любой сигнал.

Linux убивает, останавливает или продолжает процессы когда они получают SIGINT, SIGSTOP, или SIGCONT сигнал соответственно. Есть и другие сигналы, которые вы можете отправить процессам; некоторые сигналы могут обрабатываться внутри самих программ.

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

SIGTERM и SIGINT

Если вы хотите убить процесс, есть несколько вариантов. По-умолчанию, kill отправляет SIGTERM, который отличается от SIGINT отправляемого по Control-C, но обычно имеет тот же эффект:

$ kill 16217
$ jobs -l
[1]- 16217 Terminated xeyes -center red[2]+ 16224 Stopped (signal) xeyes -center blue

Полное убийство

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

$ kill 16224
$ jobs -l

[2]+ 16224 Stopped (signal) xeyes -center blue $ kill -s SIGKILL 16224
$ jobs -l
[2]+ 16224 Interrupt xeyes -center blue

nohup

Терминал в котором вы запускаете задания, называется терминалом управления заданиями. Некоторые шеллы (но не bash по-умолчанию), отправляют сигнал SIGHUP фоновым заданиям когда вы выходите, заставляя их завершаться. Для защиты процессов от такого поведения, используйте nohup когда запускаете процесс:

$ nohup make & [1] 15632

$ exit

Используем ps для вывода списка процессов

Команда jobs, которую мы использовали ранее выводит только те процессы, которые были запущены в вашей сессии bash. Чтобы увидеть все процессы в вашей системе, используйте ps совместно с опциями a и x:

$ ps ax
PID TTY STAT TIME COMMAND 1 ? S 0:04 init [3] 2 ? SW 0:11 [keventd] 3 ? SWN 0:13 [ksoftirqd_CPU0] 4 ? SW 2:33 [kswapd] 5 ? SW 0:00 [bdflush]

Здесь приведены только первые 5 процессов, поскольку обычно список процессов очень длинный. Команда дает вам «слепок» всего, что в данный момент выполняется на машине, однако в нем много лишней информации.

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

Если использовать ps a, то будет получен список процессов из терминалов всех пользователей.

Просмотр «леса» и «деревьев»

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

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

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

$ ps x –forest
PID TTY STAT TIME COMMAND 927 pts/1 S 0:00 bash 6690 pts/1 S 0:00 \_ bash26909 pts/1 R 0:00 \_ ps x –forest19930 pts/4 S 0:01 bash25740 pts/4 S 0:04 \_ vi processes.txt

«u» и «l» опции ps

Опции u и l могут быть использованы в любой комбинации с опциями a, x с целью получения более подробной информации о процессах:

$ ps au

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDagriffis 403 0.0 0.0 2484 72 tty1 S 2001 0:00 -bashchouser 404 0.0 0.0 2508 92 tty2 S 2001 0:00 -bashroot 408 0.0 0.0 1308 248 tty6 S 2001 0:00 /sbin/agetty 3agriffis 434 0.0 0.0 1008 4 tty1 S 2001 0:00 /bin/sh /usr/Xchouser 927 0.0 0.0 2540 96 pts/1 S 2001 0:00 bash $ ps al
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND100 1001 403 1 9 0 2484 72 wait4 S tty1 0:00 -bash100 1000 404 1 9 0 2508 92 wait4 S tty2 0:00 -bash000 0 408 1 9 0 1308 248 read_c S tty6 0:00 /sbin/ag000 1001 434 403 9 0 1008 4 wait4 S tty1 0:00 /bin/sh000 1000 927 652 9 0 2540 96 wait4 S pts/1 0:00 bash

Использование top

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

$ top
10:02pm up 19 days, 6:24, 8 users, load average: 0.04, 0.05, 0.0075 processes: 74 sleeping, 1 running, 0 zombie, 0 stoppedCPU states: 1.3% user, 2.5% system, 0.0% nice, 96.

0% idleMem: 256020K av, 226580K used, 29440K free, 0K shrd, 3804K buffSwap: 136544K av, 80256K used, 56288K free 101760K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 628 root 16 0 213M 31M 2304 S 0 1.9 12.5 91:43 X26934 chouser 17 0 1272 1272 1076 R 0 1.1 0.

4 0:00 top 652 chouser 11 0 12016 8840 1604 S 0 0.5 3.4 3:52 gnome-termin 641 chouser 9 0 2936 2808 1416 S 0 0.1 1.0 2:13 sawfish

nice

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

$ nice -n 10 oggenc /tmp/song.wav

С тех пор, как приоритет стал называться nice, он стал легче для запоминания, так, большее значение nice делает «хорошо» (nice — хорошо, замечательно; прим. пер.) другим процессам, позволяя им получить более приоритетный доступ к времени CPU.

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

Как правило, это означает, что oggenc даст возможность другим процессам выполняться со своей обычной скоростью, не зависимо от того, сколько времени процессора хочет сам oggenc. Вы могли видеть эти «уровни любезности» в колонке NI у ps и top ранее.

renice

Команда nice может изменять приоритет процессов только во время их запуска. Если вам необходимо изменить приоритет работающего процесса, воспользуйтесь командой renice:

$ ps l 641
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND000 1000 641 1 9 0 5876 2808 do_sel S ? 2:14 sawfish
$ renice 10 641 641: old priority 0, new priority 10

$ ps l 641

F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND000 1000 641 1 9 10 5876 2808 do_sel S ? 2:14 sawfish

Спасибо Dmitry Minsky (Dmitry.Minsky@gmail.com) за перевод.

Продолжение…

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике.

После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems.

Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Источник: //habr.com/post/105657/

30 полезных команд «ps» для мониторинга процессов Linux

Просмотр списка процессов в Linux

ps (process state — состояние процессов) — это родная утилита Unix/Linux для просмотра информации о работе запущенных процессов в системе: она считывает эту информацию из виртуальных файлов в файловой системе /proc. Это одна из важных утилит для системного администрирования специально созданная для того, чтобы помочь вам понять, что происходит в системе Linux.

В этой статье мы рассмотрим 30 полезных примеров команды ps для мониторинга активных запущенных процессов в системе Linux.

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

Вывод списка всех процессов в текущей оболочке

1. Если вы запускаете команду ps без каких-либо аргументов, она отображает процессы для текущей оболочки.

$ ps

Вывод всех процессов в разных форматах

2. Отображение каждого активного процесса в системе Linux в общем формате (Unix/Linux).

$ ps -A

ИЛИ

$ ps -e

3. Отобразим все процессы в формате BSD.

$ ps au

ИЛИ

$ ps axu

4. Чтобы выполнить полноформатный листинг, добавьте флаг -f или -F.

$ ps -ef

ИЛИ

$ ps -eF

Отображение пользовательских запущенных процессов

5. Вы можете выбрать все процессы, принадлежащие вам (выполните команду ps, как root в этом случае), введите:

$ ps -x

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

$ ps -fU tecmint

ИЛИ

$ ps -fU 1000

7. Чтобы выбрать процессы пользователя с помощью эффективного идентификатора пользователя (EUID) или его имени, используйте параметр -u.

$ ps -fu sedicomm

ИЛИ

$ ps -fu 1000

Вывод всех процессов, выполняемых как root (Real и Effecitve ID)

8. Приведенная ниже команда позволяет просматривать каждый процесс, выполняющийся с правами пользователя root (реальный и эффективный идентификатор) в пользовательском формате.

$ ps -U root -u root

Отображение групповых процессов

9. Если вы хотите вывести все процессы, принадлежащие определенной группе (идентификатор реальной группы (RGID или её имя), введите:

$ ps -fG apache

ИЛИ

$ ps -fG 48

10. Чтобы вывести все процессы, принадлежащие эффективному имени группы (или сеанса), введите:

$ ps -fg apache

Отобразим процессы по PID и PPID

11. Вы можете перечислить процессы с помощью PID следующим образом.

$ ps -fp 1178

12. Чтобы выбрать процессы с помощью PPID, введите:

$ ps -f –ppid 1154

13. Отсортировать, используя список PID.

$ ps -fp 2226,1154,1146

Процессы отображения TTY

14. Чтобы выбрать процессы с помощью tty, используйте флаг -t следующим образом.

$ ps -t pst/0 $ ps -t pst/1 $ ps -ft tty1

Вывести дерево процессов

15. Дерево процессов показывает, как процессы в системе связаны друг с другом; процессы, родительские процессы которых были завершены, принимаются init (или systemd).

$ ps -e -forest

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

$ ps -f –forest -C sshd

ИЛИ

$ ps -ef –forest | grep -v grep | grep sshd

Вывод потоков процесса

17. Чтобы вывести все потоки процесса, используйте флаг -H, это покажет LWP (легковесный процесс), а также столбцы NLWP (количество легковесных процессов).

$ ps -fL -C httpd

Указание формата пользовательского вывода

Используя опции -o или -format, ps позволяет создавать пользовательские форматы вывода, как показано ниже.

18. Чтобы перечислить все спецификаторы формата, пропишите флаг L.

$ ps L

19. Приведенная ниже команда позволяет вам просматривать PID, PPID, имя пользователя и команду процесса.

$ ps -eo pid, ppid, user, cmd

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

$ ps -p 1154 -o pid, ppid, fgroup, ni, lstart, etime

21. Чтобы найти имя процесса, используя его PID.

$ ps -p 1154 -o comm=

Отображение родительских и дочерних процессов

22. Чтобы выбрать конкретный процесс по его имени, используйте флаг -C, это также отобразит все его дочерние процессы.

$ ps -C sshd

23. Найдите PID всех экземпляров процесса, которые полезны при написании скриптов, которые должны считывать PID из выходного файла std.

$ ps -C httpd -o pid=

24. Проверьте время выполнения процесса.

$ ps -eo comm,etime,user | grep httpd

На приведенном ниже рисунке показано, что служба HTTPD работает в течение 1 часа, 48 минут и 17 секунд.

Устранение неполадок производительности системы Linux

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

26. Найдите процессы, использующие максимальное количество памяти/ЦП в Linux.

$ ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head

ИЛИ

$ ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head

27. Чтобы завершить Linux-процессы / неуправляемые приложения, которые потребляют много ресурсов процессора/памяти, выполните следующую команду:

Во-первых, найдите PID соответствующего процесса или приложения.

$ ps -A | grep -i stress

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

$ kill -9 2583 2584

Вывод информация о безопасности

28. Выведите контекст безопасности (в частности, для SELinux):

$ ps -eM

ИЛИ

$ ps –context

29. Вы также можете отобразить информацию о безопасности в пользовательском формате с помощью этой команды:

$ ps -eo euser,ruser,suser,fuser,f,comm,label

Выполнение мониторинга процессов в реальном времени с помощью утилиты Watch

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

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head'

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

Спасибо за уделенное время на прочтение статьи!

Источник: //blog.sedicomm.com/2018/05/28/30-poleznyh-komand-ps-dlya-monitoringa-protsessov-linux/

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.