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

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

Рубрики:

Linux, Мониторинг

Метки:

, , , , ,

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

Содержание:

  1. Что такое ps в Linux
  2. Примеры использования команд ps
    1. Используем общий формат для Unix / Linux
    2. Используем формат вывода от BSD
    3. Показываем все активные процессы пользователя с помощью команды ps
    4. Показываем активные процессы по имени пользователя
    5. Показываем активные процессы по RUID пользователя
    6. Выводим на экран активные процессы, запущенные с правами пользователя
    7. Выводим на экран активные процессы, запущенные с правами пользователя по его имени
    8. Выводим на экран активные процессы, запущенные с правами пользователя по EUID
    9. Находим все процессы, запущенные суперпользователем либо выполняющиеся с правами root (по RUID и EUID)
    10. Показываем все активные процессы группы пользователей
    11. Находим и выводим на экран все активные процессы по EGID
    12. Находим активные процессы по их PID с помощью команды ps
    13. Выводим на экран активные процессы по значению их PPID
    14. Находим несколько активных процессов по их значениям PID с помощью команды ps
    15. Настраиваем отображение процессов по TTY
    16. Настраиваем отображение дерева процессов с помощью команды ps
    17. Показываем дерево процессов для конкретного процесса
    18. Выводим на экран данные о потоках процесса с помощью команды ps
    19. Выбираем пользовательский формат вывода команды
    20. Выводим на экран PID, PPID, имя пользователя и команду процесса
    21. Выводим на экран группу файловой системы, приоритет nice, время старта и выполнения процессов
    22. Выводим имя процесса по PID с помощью команды ps
    23. Находим родительские и дочерние процессы
    24. Узнаем значения PID разных экземпляров процесса
    25. Выводим на экран время выполнения процесса с помощью команды ps
    26. Находим процессы, использующие максимум ресурсов компьютера (ОЗУ / ЦП)
    27. Завершаем неуправляемые процессы с помощью команды ps
    28. Просматриваем контекст безопасности с помощью команды ps
    29. Указываем пользовательский формат данных о безопасности
    30. Осуществляем мониторинг в реальном времени с помощью утилиты watch
  3. Выводы

Что такое ps в Linux

Утилита ps (от англ. Process State — «состояние процессов») — это встроенная программа для Unix-подобных операционных систем. Прежде всего, она широко используется при администрировании ОС семейства GNU / Linux. С ее помощью осуществляется мониторинг активных процессов по виртуальным файлам в файловой системе /proc.

Примеры использования команд ps

Утилита ps является одним из основных инструментов системного администратора, поскольку позволяет ориентироваться в том, что конкретно происходит с Linux. Потому мы решили специально написать статью с 30 полезными способами использования ps для мониторинга активных запущенных процессов в операционной системе семейства GNU / Linux.

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

Самый простой пример использования утилиты — это выведение на экран всех активных процессов оболочки Linux. Для этого достаточно ввести в командную строку команду ps без каких-либо аргументов и опций:

 

ps

А теперь — перейдем к различным полезным примерам использования команды ps.

Используем общий формат для Unix / Linux

Первый пример — изменение стандартного формата вывода данных о запущенных процессах. Для начала попробуем вывести информацию в формате, общем для операционных систем Unix / Linux. Для этого вводим в командную строку команду ps с опцией -A:

 

К аналогичному результату приведет и введение команды ps с опцией -e:

 

ps

Используем формат вывода от BSD

Стоит отметить, что некоторым системным администраторам более удобно выводить результаты в формате, характерном для BSD. Для этого вводим в командную строку команду ps с опциями -au:

 

Также для получения соответствующего формата вывода можно ввести в командную строку команду ps с опциями -axu:

ps

Используем расширенный вывод команды ps с помощью полноформатного листинга

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

 

Если и этого мало — вводим в командную строку команду ps с опциями -eF для получения более подробного листинга:

 

ps

Показываем все активные процессы пользователя с помощью команды ps

Еще один из полезных примеров использования утилиты — это выведение всех активных процессов конкретного пользователя. Чтобы получить такой результат — вводим в командную строку команду ps с опцией -x:

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

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

Показываем активные процессы по RUID пользователя

Вместо имени пользователя Вы можете использовать его RUID.

RUID (от англ. Real User ID) — это реальный идентификатор пользователя, инициировавшего запуск процесса в операционных системах семейства GNU / Linux и других UNIX-подобных ОС.

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

 

ps

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

Чтобы вывести на экран процессы, выполняющиеся с правами указанного пользователя — вводим в командную строку команду ps с опцией -u и добавляем к ней в качестве аргумента имя пользователя:

Выводим на экран активные процессы, запущенные с правами пользователя по EUID

Вместо имени пользователя Вы можете использовать его EUID.

EUID (от англ. Effective User ID) — это эффективный идентификатор пользователя в UNIX-подобных операционных системах, с правами которого которого выполняется процесс. Как правило он равен реальному идентификатору пользователя. Однако может отличаться, если процесс выполняется с разрешениями, отсутствующими у пользователя (типичный пример — выполнение команд от имени суперпользователя с помощью команды sudo).

Чтобы вывести на экран процессы, выполняющиеся с правами указанного пользователя — вводим в командную строку команду ps с опцией -u и добавляем к ней в качестве аргумента идентификатор пользователя:

Находим все процессы, запущенные суперпользователем либо выполняющиеся с правами root (по RUID и EUID)

Системному администратору обязательно нужно уметь выводить на экран все процессы, которые запущены от имени суперпользователя (по RUID). Либо же выполняются с root-правами (по EUID). Для этого вводим в командную строку команду ps одновременно с опциями -U и -u, указав оба раза в качестве аргументов — root:

 

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

ps

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

Бывает полезно вывести на экран все процессы, которые запущены определенной группой пользователей. При этом сделать этом можно как по названию группы, так и по значению ее RGID.

RGID (от англ. Real Group ID) — это реальный идентификатор группы, от имени пользователей которой запущен процесс.

Для попробуем использовать название группы — вводим его в командную строку после команды ps с опцией -G:

 

Вместо названия группы Вы можете ввести в качестве аргумента значение ее RGID:

 

ps

Находим и выводим на экран все активные процессы по EGID

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

EGID (от англ. Effective Group ID) — эффективный идентификатор группы пользователей в Linux.

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

 

К аналогичному результату приведет введение вместо названия группы ее ID:

Находим активные процессы по их PID с помощью команды ps

Также разработчики предусмотрели выведение запущенных процессов по PID.

PID (от англ. Process ID) — идентификатор процесса в операционной системе (в том числе — в Linux и других UNIX-подобных ОС).

Чтобы найти процесс по значению его идентификатора — вводим в командную строку команду ps с опцией -p и значение PID процесса в качестве аргумента:

 

ps

Выводим на экран активные процессы по значению их PPID

Не менее полезно для системного администратора уметь вывести список процессов по значению PPID.

PPID (от англ. Parent Process ID) — это идентификатор родительского процесса. То есть процесса, инициировавшего запуск данного процесса.

Чтобы найти процессы по значению ID их родительского процесса — введите в командную строку команду ps с опцией --ppid и в качестве аргумента укажите идентификатор предполагаемого родительского процесса:

 

ps

Находим несколько активных процессов по их значениям PID с помощью команды ps

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

 

ps

Настраиваем отображение процессов по TTY

Также предусмотрена возможность выведения списка запущенных процессов по их TTY.

TTY (от англ. Teletypewriter) — это имя терминала, через который запускается тот или иной процесс в UNIX-подобных ОС, включая Linux.

Вводим в командную строку команду ps с опцией -t и значение TTY в качестве аргумента:

 

 

 

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

ps

Настраиваем отображение дерева процессов с помощью команды ps

С помощью утилиты можно отобразить дерево процессов в Linux.

Дерево процессов — это схема взаимосвязи между процессами, которая показывает для каждого запущенного процесса родительский процесс в системе (если родительские процессы не являются активными, то вместо них указывается init либо systemd).

В случае, если Вам нужно увидеть дерево процессов — вводим в командную строку команду ps с опцией --forest:

 

ps

Показываем дерево процессов для конкретного процесса

Безусловно, выведение дерева процессов было бы не таким полезным, если бы нельзя было вывести его для конкретного процесса. Для этого вводим в командную строку команду ps с опцией--forest и название процесса в качестве аргумента:

 

Другой способ — вывести полное дерево процессов и отфильтровать вывод команды ps с помощью команды grep:

 

ps

Выводим на экран данные о потоках процесса с помощью команды ps

Также у Вас может возникнуть необходимость отобразить данные о потоках процесса (LWP и NLWP).

LWP (от англ. Light-Weight Process) — это легковесный процесс, средство достижения многозадачности в операционной системе. Процесс, работающий в пространстве пользователя поверх одного из потоков выполнения ядер процессора.

NLWP (от англ. Number Light-Weight Process) — число легковесных процессов в операционной системе.

Для отображения значений LWP и NLWP процесса — вводим в командную строку команду ps с опцией -L и название исполняемого файла после опции -C:

 

ps

Выбираем пользовательский формат вывода команды

Теперь, когда Вы научились получать важную информацию о процессах — можно попробовать установить пользовательский формат вывода. Чтобы отобразить все существующие виды столбцов и выбрать из них интересующие — вводим в командную строку команду ps с опцией -l (длинный формат вывода команды):

Выводим на экран PID, PPID, имя пользователя и команду процесса

Давайте попробуем вывести одновременно значения PID и PPID, имя пользователя, а также — исполняемый файл запущенного процесса. Для этого вводим в командную строку команду ps с опциями -eo и перечисляем через запятую без пробелов в качестве аргумента названия столбцов (pid,ppid,user,cmd):

 

ps

Выводим на экран группу файловой системы, приоритет nice, время старта и выполнения процессов

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

  • идентификатор группы доступа к файловой системе;
  • приоритет nice;
  • время старта процесса;
  • время выполнения процесса.

Допустим, что все эти данные Вы хотите узнать для конкретного процесса — тогда сначала вводим командную строку команду ps с опцией -p и значением PID процесса. И через пробел добавляем опцию -o, после которой через запятую без пробелов перечисляем названия столбцов (pid,ppid,fgroup,ni,lstart,etime):

 

ps

Выводим имя процесса по PID с помощью команды ps

Наверное, довольно часто возникает потребность узнать имя процесса, когда известен лишь его PID. В этом случае вводим в командную строку команду ps с опцией -p и значением PID процесса. И добавляем аргумент comm= после опции -o:

 

ps

Находим родительские и дочерние процессы

Крайне полезным бывает найти родительские и дочерние процессы. Для этого вводим в командную строку команду ps с опцией -C и название процесса:

 

ps

Узнаем значения PID разных экземпляров процесса

Бывает, что нужно вывести PID всех запущенных экземпляров процесса. Как правило, такие данные требуются для скриптов, берущих информацию PID из файла или стандартного вывода (поток 1 — stdout). Сделать это можно следующим образом:

 

ps

Выводим на экран время выполнения процесса с помощью команды ps

Кроме того, бывает полезным узнать, как долго выполняется тот или иной процесс. Для этого вводим в командную строку команду ps с опциями -eo и перечисляем через запятую без пробелов названия столбцов (comm,etime,user). С помощью конвейера добавляем фильтрацию ввода командой grep, выводя только строки, содержащие название процесса:

 

Важно: время работы процесса sshd указано в минутах и секундах.

ps

Находим процессы, использующие максимум ресурсов компьютера (ОЗУ / ЦП)

Также полезным для любого системного администратора бывает умение обнаружить все процессы, использующие максимальное количество рерсурсов ОЗУ / ЦП в Linux.

Получить информацию по использованию ОЗУ поможет следующий набор опций и аргументов:

 

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

 

ps

Завершаем неуправляемые процессы с помощью команды ps

Вероятно, Вам придется завершать работу процессов в Linux (например, процессы, которые потребляют чрезмерные объемы памяти и слишком сильно загружают процессор). Для этого сначала узнаем PID процесса — вводим в командную строку команду ps с опцией -A (вывод всех активных процессов) и с помощью команды grep с опцией -i(игнорирование регистра при поиске соответствия) через конвейер фильтруем вывод по предполагаемому названию процесса:

 

После этого вводим в командную строку команду kill с -9 в качестве первого аргумента. И далее через пробелы — значения PID процессов, которые Вы желаете завершить:

 

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

Просматриваем контекст безопасности с помощью команды ps

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

Контекст безопасности — это одно из понятий системы SELinux (от англ. Security-Enhanced LinuxLinux с улучшенной безопасностью), включающее в себя совокупность атрибутов, связанных с объектами и субъектами (файлами, сетевыми портами, оборудованием и т.п.).

Чтобы вывести на экран контекст безопасности процессов — вводим в командную строку команду ps с опцией -M:

 

Есть еще один способ увидеть контекст безопасности процессов — для этого вводим в командную строку команду ps с опцией --context:

 

ps

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

Информацию о контексте безопасности и прочие полезные данные также можно комбинировать, получая вывод в пользовательском формате. Для этого вводим в командную строку команду ps с опциями -eo и далее перечисляем аргументы через запятую без пробелов (euser,ruser,suser,fuser,f,comm,label):

Осуществляем мониторинг в реальном времени с помощью утилиты watch

Стоит отметить, что команда ps имеет один серьезный недостаток — она отображает информации, актуальную только на момент введения. Однако решить эту проблему можно за счет использования watch.

Утилита watch — это инструмент для UNIX-подобных операционных систем, предназначенный для циклического запуска других программ с заданным временным интервалом.

Объединив команды watch и ps, можно осуществлять мониторинг процессов в реальном времени с интервалом в 1 секунду:

 

ps

Важно: для просмотра часто обновляемого вывода можно применять htop, top и glances (последние два — инструменты мониторинга производительности Linux).

Выводы

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

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

Если возникли вопросы — задавайте их в комментариях!

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Linux, Мониторинг

Метки:

, , , , ,

Больше похожих постов

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Поиск по сайту
Лучшее
Популярное
Рубрики
Меню