Как использовать команду ps для мониторинга процессов Linux

Окно терминала на ноутбуке с Linux.

Фатмавати Ахмад Дзэнури / Shutterstock



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

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

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





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

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



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

Листинговые процессы

Самый простой способ использовать ps это запустить его без параметров:

ps



Реклама

-e отображает список процессов, запущенных пользователем, выполнившим команду.

Четыре столбца:

    PID: Идентификационный номер процесса. Телетайп: Имя консоли, на которой зарегистрирован пользователь. ВРЕМЯ: Время обработки ЦП, которое использовал процесс. CMD: Имя команды, запустившей процесс.

Процесс листинга для всех пользователей

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

?

Список процессов передается в TTY.

В нашем списке намного больше записей, но мы видим те же четыре столбца, что и раньше. Записи со знаком вопроса -H в ps столбец не запускался из окна терминала.

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

Иногда помогает выяснить проблему или идентифицировать конкретный процесс, если вы видите, какие процессы запустили другие процессы. Мы используем --forest (иерархия) вариант для этого.

ps

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

Реклама

Чтобы добавить немного большей ясности, мы можем спросить grep добавить немного ASCII линий и нарисовать иерархию в виде дерева. Вариант сделать это - -f вариант.

ps

Это упрощает отслеживание того, какие процессы являются родительскими для других процессов.

Список процессов по имени

Вы можете направить вывод из -F через ps перечислить записи имена которых соответствуют поисковому запросу . Здесь мы ищем записи, соответствующие поисковому запросу firefox:

-p

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

Отображение большего количества столбцов в выводе

Чтобы добавить дополнительные столбцы к выходным данным, используйте -C (полноформатный) вариант.

-u

Дополнительный набор столбцов включен в вывод -t.

Столбцы:

    UID: ID пользователя владельца этого процесса. PID: Идентификатор процесса. PPID: ID родительского процесса. C: Количество потомков процесса. ОЦЕНКИ: Начальное время. Время, когда процесс начался. Телетайп: Имя консоли, на которой зарегистрирован пользователь. ВРЕМЯ: Время обработки ЦП, которое использовал процесс. CMD: Имя команды, запустившей процесс.
Реклама

Используя -t (дополнительный полноформатный) вариант, мы можем получить еще больше столбцов:

tty

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

При нажатии клавиши со стрелкой вправо дисплей перемещается влево.

Теперь мы получаем следующие столбцы:

    UID: ID пользователя владельца этого процесса. PID: Идентификатор процесса. PPID: ID родительского процесса. C: Количество потомков процесса. S: Размер в ОЗУ страниц образа процесса. RSS: Размер резидентного набора. Это физическая память без подкачки, используемая процессом. PSR: Процессор, которому назначен процесс. ОЦЕНКИ: Начальное время. Время, когда процесс начался. Телетайп: Имя консоли, на которой зарегистрирован пользователь. ВРЕМЯ: Время обработки ЦП, которое использовал процесс. CMD: Имя команды, запустившей процесс.

Листинг процессов по идентификатору процесса

Как только вы нашли идентификатор процесса, который вас интересует, вы можете использовать его с ps -t команда, чтобы перечислить детали этого процесса. Используйте pts/0 (выберите по идентификатору процесса) вариант для достижения этой цели:

pts/1

Подробности этого процесса перечислены:

Вы не ограничены одним идентификатором процесса. Вы можете предоставить список идентификаторов процессов, разделенных пробелами.

Список процессов по команде

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

ps

Приведены подробные сведения о процессе затвора.

Листинг процессов, принадлежащих пользователю

Чтобы увидеть процессы, принадлежащие конкретному пользователю, используйте pcpu (список пользователей) вариант:

args

Реклама

Отображаются процессы, принадлежащие учетной записи пользователя mary.

Листинг процессов по терминалам

Чтобы увидеть процессы, связанные с TTY, используйте --sort (выберите по телетайпу). При использовании без номера телетайпа - опция сообщает о процессах, связанных с текущим окном терминала.

pcpu head

pmem команда сообщает, что это псевдотелетайп 0. Процессы, перечисленные в + все связаны с телетайпом pmem.

Если мы передадим номер TTY в командной строке, мы должны получить отчет о процессах, связанных с этим TTY.

pid

На этот раз все процессы связаны с TTY kill.

СВЯЗАННЫЙ: Что такое TTY в Linux? (и как использовать команду tty)

Выбор столбцов для отображения

С помощью pkill (формат) вы можете выбрать, какие столбцы вы хотите включить в вывод из killall. Вы указываете столбцы по имени. (Длинный) список имен столбцов можно увидеть на страница руководства в разделе 'Спецификаторы стандартных форматов'. В этом примере мы выбираем, чтобы в вывод включались процессорное время (ps) и командная строка с аргументами (top).

top

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

Сортировка вывода по столбцам

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

-H

Дефис --forest на

ps
Параметр sort задает порядок сортировки по убыванию.

Чтобы увидеть десять процессов с наиболее интенсивной загрузкой ЦП, направьте вывод через

ps -e | less
команда :

ps -eH | less

Получаем отсортированный, усеченный список.

Если мы добавим больше столбцов к нашему дисплею, мы сможем отсортировать их по большему количеству столбцов. Добавим

ps -eH --forest | less
столбец. Это процент памяти компьютера, который используется процессом. Без дефиса или с плюсом
ps -e | grep firefox
порядок сортировки возрастающий.

ps -ef | less

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

ps -eF | less
.

Реклама

Давайте сделаем его более полезным и добавим столбец идентификатора процесса (

ps -p 3403
), чтобы мы могли видеть номер каждого процесса в нашем листинге.

ps -C shutter

Теперь мы можем идентифицировать процессы.

Вывод из ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem | глава 10

Процессы уничтожения по идентификатору процесса

Мы рассмотрели ряд способов идентификации процессов, включая имя, команду, пользователя и терминал. Мы также рассмотрели способы идентификации процессов по их динамическим атрибутам, таким как использование ЦП и памяти.

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

ps -u mary
команда. Если бы мы хотели убить процесс 898, мы бы использовали следующий формат:

tty

Если все идет хорошо, процесс автоматически завершается.

СВЯЗАННЫЙ: Как убить процессы из терминала Linux

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

ps -t
команда позволяет вам убить процессы по имени . Убедитесь, что вы выбрали правильный процесс! Эта команда завершит верхний процесс.

ps -t 1

Опять же, отсутствие новостей - это хорошие новости. Процесс автоматически завершается.

Удаление нескольких процессов по имени

Если у вас есть несколько запущенных копий процесса или процесс породил несколько дочерних процессов (как это может делать Google Chrome), как вы можете их убить? Это так же просто. Мы используем

ps -e -o pcpu,args | less
команда.

У нас есть две копии топ-бега:

ps -e -o pcpu,args --sort -pcpu| less

Мы можем прекратить они оба с этой командой :

ps -e -o pcpu,args --sort -pcpu | head -10

Реклама

Отсутствие ответа означает отсутствие проблем, поэтому оба эти процесса были прекращены.

вывод sudo killall top в окне терминала

Получите динамический просмотр с верхним

Вывод из

ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10
представляет собой снимок экрана. Не обновляется. Чтобы получить обновленное представление о процессах, используйте
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10
команда. Он обеспечивает динамический просмотр процессов, запущенных на вашем компьютере . Дисплей состоит из двух частей. В верхней части экрана есть панель мониторинга, состоящая из строк текста, и таблица в нижней части экрана, состоящая из столбцов.

Пуск

sudo kill 898
с помощью этой команды:

sudo pkill top

Столбцы содержат информацию о процессах:

    PID: ID процесса ПОЛЬЗОВАТЕЛЬ: Имя владельца процесса PR: Приоритет процесса NI: Хорошая ценность процесса УВАЖАЕМЫЙ: Виртуальная память, используемая процессом ГОВЯДИНА: Резидентная память, используемая процессом SHR: Общая память, используемая процессом S: Статус процесса. См. Список значений, которые может принимать это поле ниже. %ПРОЦЕССОР: доля процессорного времени, использованная процессом с момента последнего обновления. % MEM: доля используемой физической памяти ВРЕМЯ +: общее время процессора, использованное задачей в сотых долях секунды КОМАНДА: имя команды или командная строка (имя и параметры командной строки) Если столбец команд не виден, нажмите клавишу со стрелкой вправо.

Статус процесса может быть одним из:

    D: Непрерывный сон р: Бег S: Спать Т: Отслежено (остановлено) С УЧАСТИЕМ: Зомби

Нажмите клавишу Q, чтобы выйти из

ps -e | grep top
.

СВЯЗАННЫЙ: 37 важных команд Linux, которые вы должны знать

Прежде, чем вы убьете процесс

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

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

Команды Linux
Файлы деготь · pv · Кот · такс · chmod · рукоятка · разница · sed · С участием · человек · толкать · popd · fsck · тестовый диск · seq · fd · пандок · компакт диск · $ ПУТЬ · awk · присоединиться · jq · складывать · уникальный · journalctl · хвостик · государство · ls · fstab · выбросил · меньше · chgrp · Chown · rev · Посмотрите · струны · тип · переименовать · застегивать · распаковать · устанавливать · размонтировать · установить · fdisk · mkfs · rm · rmdir · rsync · df · gpg · мы · нано · mkdir · от · пер · пластырь · конвертировать · rclone · крошить · SRM
Процессы псевдоним · экран · верхняя · Ницца · Ренис · прогресс · Strace · система · tmux · чш · история · в · партия · бесплатно · который · dmesg · usermod · пс · chroot · xargs · tty · мизинец · lsof · vmstat · тайм-аут · стена · да · убийство · спать · судо · его · время · groupadd · usermod · группы · lshw · неисправность · перезагружать · останавливаться · выключение · пароль · lscpu · crontab · Дата · bg · фг
Сети netstat · пинг · трассировка · ip · SS · кто · fail2ban · бмон · ты · Палец · nmap · ftp · завиток · wget · ВОЗ · кто я · В · iptables · ssh-keygen · ufw

СВЯЗАННЫЙ: Лучшие ноутбуки с Linux для разработчиков и энтузиастов

ПРОЧИТАЙТЕ СЛЕДУЮЩИЙ Фотография профиля Дэйва Маккея Дэйв Маккей
Дэйв Маккей впервые использовал компьютеры, когда в моде была перфолента, и с тех пор он занимается программированием. Проработав более 30 лет в ИТ-индустрии, он теперь работает журналистом в области информационных технологий. За свою карьеру он работал программистом-фрилансером, менеджером международной группы разработчиков программного обеспечения, менеджером проекта ИТ-услуг, а в последнее время - специалистом по защите данных. Его статьи были опубликованы на сайтах howtogeek.com, cloudsavvyit.com, itenterpriser.com и opensource.com. Дэйв - евангелист Linux и сторонник открытого исходного кода.
Прочитать полную биографию

Интересные статьи