Просмотр процессов, которые запущены на сервере Linux

275 прочитали
Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.

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

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

Кратко про то, что такое процесс

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

Состояние процесса можно описать тремя моделями:

  • выполнения
  • ожидания
  • готовности

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

После создания и до момента завершения процессы выстраиваются в виде дерева, на вершине которого всегда находится процесс под названием init (про него мы поговорим в одной из следующих заметок).

Мне кажется, что этот самый минимум информации, которого достаточно, чтобы понять процессы, перейдем к моей любимой практике.

Утилита ps

Для просмотра системных процессов используется утилита (и одноименная команда) ps, образованная от слов «process status». Она идет по-умолчанию во всех дистрибутивах Linux, поэтому никаких дополнительных телодвижений в плане установки делать не нужно. Просто в терминале вводим две буквы ps

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-2

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

  • Первый столбец (PID) - идентификатор процесса (говоря проще номер)
  • Второй столбец (TTY) - наименование виртуального терминала, к которому прикреплён процесс.
  • Третий столбец (TIME) - процессорное время, затраченное процессом.
  • Четвертый столбец (CMD) - приложение, которое запустило процесс.

Ключи для использования с ps

Использование ключе -e выведет список всех процессов, которые запущены на сервере.

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-3

При вводе команды с ключом -e мы не увидим состояние процесса. Чтобы расширить перечень информации используем ключ u.

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-4

Теперь видим, что у нас добавились столбцы, которые выводят имя пользователя (USER), запустившего процесс, процент процессорного времени которое было потрачено на выполнение процесса с момента его запуска (%CPU), долю физической памяти, занятой процессом( %MEM), время запуска процесса (START) и его состояние (STAT). Подробнее про эти показатели вы можете прочитать в справочной литературе или статьях в интернете, в рамках этой статьи не хочу вновь углубляться в теорию.

Самым часто используемым набором ключей является aux. Попробуем ввести в терминал ps aux.

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-5

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

Работа с конкретными процессами

Использование ключа -p и последующее указание идентификатора процесса (PID) выведет информацию только о выбранном процессе. Попробуем вывести все, что можно про самый первый процесс - с PID 1.

ps u -p 1

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-6

Если указать ключ -u и имя пользователя, то можно вывести процессы запущенные только им, а использование -g позволяет вывести процессы, запущенные группой пользователей.

ps u -u root

ps u -g root

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-7

Ну, и наконец, можно вывести процессы, которые были запущены конкретной программой. В теории есть такое понятие, как «лидер» - это процесс, который запускает другие. Например, таким лидером может быть php, сервер apache или nginx. Использование ключа -C позволит вам посмотреть какие процессы запустила та или иная программа.

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-8

Как видим, некоторые программы имеют запущенные собой процессы, а у некоторых программ процессов просто-напросто нет.

Подведем итог

В примерах выше я показал лишь те вариации использования ps, которые на постоянной основе использую сам. Утилита имеет большое количество вариантов комбинирования ключей для более точного вывода информации о запущенных на сервере процессах. Помним, что познакомиться с руководством по использованию программы в Linux можно при помощи использования команды man. Так если ввести man ps, то в «выхлопе» будет отображена вся полезная информация. Чтобы выйти из руководства нажмите клавишу q.

Одной из частых задач системного администратора Линукс-сервера является просмотр запущенных процессов.-9

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

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