- Команда Ps в Linux (Список Процессов)
- Ps Command in Linux (List Processes)
- В этой статье объясняется, как использовать ps команду для отображения текущих запущенных процессов и отображения информации об этих процессах.
- Как использовать ps команду
- Пользовательский формат
- Использование ps с другими командами
- Вывод
- Работа с процессами в Linux
- Список процессов
- Как найти процесс по имени на серверах центров обработки данных Linux
- pidof
- pgrep
- Как использовать команду ps для мониторинга процессов Linux
- Управление процессами в Linux
- Программа для показа процессов в Linux
- Как увидеть все процессы в Linux
- Отображение иерархии процессов (дерево процессов в Linux)
- Как напечатать дерево определённого процесса
- Фильтрация вывода ps по определённым строкам (по имени команды, например)
- Больше столбцов в выводе ps
- Нужно ли указывать дефис перед опциями ps
- Поиск процессов по идентификатору процесса
- Поиск процессов по имени команды
- Как увидеть потоки процесса
- Как увидеть процессы определённого пользователя
- Как вывести все процессы запущенные пользователем root
- Просмотр групповых процессов
- Листинг процессов по терминалам
- Выбор столбцов для отображения
- Сортировка вывода по столбцам
- Все возможные поля ps
- Примеры настраиваемого вывода ps
- Как найти имя процесса по PID
- Показать родительский и дочерний процессы
- Как выключить процесс по идентификатору процесса
- Как выключить процесс зная его имя
- Как остановить несколько процессов по имени
- Прежде чем убить процесс
- Устранение неполадок производительности системы Linux
- Вывод информации о безопасности
- Выполните мониторинг процессов в режиме реального времени с помощью утилиты watch
Команда Ps в Linux (Список Процессов)
Ps Command in Linux (List Processes)
В этой статье объясняется, как использовать ps команду для отображения текущих запущенных процессов и отображения информации об этих процессах.
В Linux запущенный экземпляр программы называется процессом. Иногда при работе на компьютере с Linux вам может понадобиться выяснить, какие процессы выполняются в данный момент.
Есть несколько команд , которые вы можете использовать , чтобы найти информацию о запущенных процессах, с ps , pstree и top являются наиболее часто используемыми из них.
Как использовать ps команду
Общий синтаксис ps команды выглядит следующим образом:
По историческим причинам и из соображений совместимости ps команда принимает несколько различных типов параметров:
- Опции стиля UNIX, перед которыми стоит одна черточка.
- Варианты стиля BSD, используемые без тире.
- Длинные опции GNU, начинающиеся с двух тире.
Различные типы опций могут быть смешаны, но в некоторых конкретных случаях могут возникать конфликты, поэтому лучше придерживаться одного типа опций.
Опции BSD и UNIX могут быть сгруппированы.
В простейшем виде, при использовании без какой-либо опции, ps напечатает четыре столбца информации для минимум двух процессов, запущенных в текущей оболочке, самой оболочки и процессов, которые запускаются в оболочке при вызове команды.
Вывод включает в себя информацию о shell ( bash ) и процессе, запущенном в этой оболочке ( ps введенная вами команда):
Четыре колонки помечены PID , TTY , TIME , и CMD .
- PID — Идентификатор процесса. Обычно при запуске ps команды наиболее важной информацией, которую ищет пользователь, является идентификатор процесса. Знание PID позволяет убить сбойный процесс .
- TTY — Название управляющего терминала для процесса.
- TIME — Совокупное время ЦП процесса, показанное в минутах и секундах.
- CMD — Имя команды, которая использовалась для запуска процесса.
Вывод выше не очень полезен, так как он не содержит много информации. Настоящая сила ps команды появляется при запуске с дополнительными опциями.
Команда ps принимает огромное количество опций, которые можно использовать для отображения определенной группы процессов и различной информации о процессе, но для повседневного использования требуется лишь несколько из них.
ps чаще всего используется со следующей комбинацией параметров:
Форма BSD :
- a — Опция указывает ps отображать процессы всех пользователей. Только процессы, не связанные с терминалом, и процессы руководителей групп не отображаются.
- u — обозначает пользовательский формат, который предоставляет подробную информацию о процессах.
- x — Инструктирует ps перечислить процессы без управляющего терминала. В основном это процессы, которые запускаются во время загрузки и работают в фоновом режиме .
Команда отображает информацию в одиннадцати столбцах USER , PID , %CPU , %MEM , VSZ , RSS , STAT , START , TTY , TIME , и CMD .
Мы уже объяснили PID , TTY , TIME и CMD . Вот объяснение других меток:
- USER — Пользователь, который запускает процесс.
- %CPU — The CPU использование процесса.
- %MEM — Процент резидентного установленного размера процесса к физической памяти на машине.
- VSZ — Размер виртуальной памяти процесса в КиБ.
- RSS — Размер физической памяти , используемой процессом.
- STAT — Код состояния процесса, такой как Z (зомби), S (спящий) и R (работает).
- START — время, когда команда началась.
f Опция указывает , ps чтобы отобразить в виде дерева родителя к ребенку процессов:
Команда ps также позволяет вам сортировать вывод. Например, чтобы отсортировать вывод на основе использования памяти, вы должны использовать:
UNIX форма :
- -e Параметр предписывает , ps чтобы отобразить все процессы.
- На -f стендах полноформатный листинг, в котором представлена подробная информация о процессах.
Команда отображает информацию в восьми столбцах UID , PID , PPID , C , STIME , TIME , и CMD .
Метки, которые еще не объяснены, имеют следующее значение:
- UID — То же USER , что и пользователь, который запускает процесс.
- PPID — Идентификатор родительского процесса.
- C — То же %CPU , что и загрузка ЦП процесса.
- STIME — То же START , что и время начала команды.
Чтобы просмотреть только процессы, запущенные от имени определенного пользователя, введите следующую команду, где linuxize указано имя пользователя:
Пользовательский формат
o — Опция позволяет указать , какие столбцы отображаются при выполнении ps команды.
Например, чтобы напечатать информацию только о PID и COMMAND , вы должны выполнить одну из следующих команд:
Использование ps с другими командами
ps может использоваться в сочетании с другими командами через трубопровод.
Если вы хотите отобразить вывод ps команды, по одной странице за раз передайте ее less команде:
Вывод ps команды можно отфильтровать с помощью grep . Например, чтобы показать только процесс, принадлежащий пользователю root, вы должны запустить:
Вывод
Команда ps является одной из наиболее часто используемых команд при устранении неполадок в системах Linux. Она имеет много вариантов, но , как правило, большинство пользователей используют либо ps aux или ps -ef для сбора информации о запущенных процессах.
Для получения дополнительной информации ps , введите man ps свой терминал.
Источник
Работа с процессами в Linux
Список процессов
Вывести на экран список текущих процессов, запущенных пользователем, можно командой:
Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:
Мы увидим, примерно, следующее:
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 — текущее состояние процесса. Могут принимать значения:
- R — выполнимый процесс;
- S — спящий;
- D — в состоянии подкачки на диске;
- T — остановлен;
- Z — зомби.
- W — не имеет резидентных страниц;
- Дмитрий Моск — IT-специалист.
Настройка серверов, компьютерная помощь.
Как управлять процессами в операционной системе Linux
Источник
Как найти процесс по имени на серверах центров обработки данных Linux
pidof и pgrep – это две команды, которые должен знать каждый администратор Linux.
Вы, возможно, никогда не нуждались в них, но если это случилось, вы будете рады, что они находятся в вашем инструменте.
Что вы будете делать, если сервер центра обработки данных Linux работает медленно?
Одна из первых вещей, которые вы можете сделать, это проверить сетевое подключение.
После этого вам, вероятно, понадобится выяснить, какие службы / программное обеспечение стали изгоями и поглощают ценные системные ресурсы.
Существует несколько способов сделать это.
Например, вы можете использовать команду top, которая будет отображаться в процессе выполнения в реальном времени.
Оттуда вы можете найти идентификатор процесса и посмотреть, сколько использования памяти использует этот процесс.
Или вы можете пойти по другому маршруту и использовать пару команд, чтобы найти этот идентификатор процесса (PID) по имени.
В частности, есть две команды, каждая из которых должна знать каждый администратор Linux.
Я хочу продемонстрировать использование этих команд, поэтому, надеюсь, ваша задача администрирования Linux может быть немного проще.
Я буду демонстрировать на Ubuntu Server 18.04, но команды доступны (и используются одинаково) на всех платформах Linux.
pidof
Команда pidof является первой, на которой мы рассмотрим.
Как и следовало ожидать, он сообщит нам PID службы.
Эта команда найдена на ваших серверах Linux из коробки, поэтому нет необходимости устанавливать что-либо.
Предположим, у вас есть сервер LAMP в вашем центре обработки данных, и Apache ведет себя плохо (или, по крайней мере, вы его предполагаете).
Для устранения неполадок вам может потребоваться найти PID Apache.
К счастью, у вас есть команда pidof, поэтому вы можете указать:
В случае Apache вам может быть возвращен ряд PID
Теперь у вас есть каждый идентификатор процесса вашего текущего сервера Apache.
Конечно, с таким процессом, как Apache, вовремя он себя ведет, вы можете захотеть сделать быстрый перезапуск с помощью команды, такой как sudo systemctl restart apache2.
Но если служба не отвечает на перезагрузку, что вы делаете?
К счастью, у вас есть эти PID, поэтому вы всегда можете убить службу (используя команду PID kill, где PID – это PID службы, которую нужно убить).
Убийство службы, такой как Apache, должно выполняться только в крайнем случае (всегда начинайте с инструмента, такого как systemctl).
Но наличие этих PID в руке может значительно облегчить вашу работу.
pgrep
Команда pgrep работает аналогично pidof, главным отличием является то, что она может искать процесс, основанный на имени или других атрибутах.
Например, pgrep может искать PID, связанные с группой.
В Ubuntu большинство материалов Apache обычно привязаны к группе www-data.
С помощью pgrep легко узнать, какие PID связаны с этой группой.
Результат этой команды может не принести нам пользы.
В конце концов, как мы узнаем, к чему относятся эти PID (вне группы)?
Возможно, нам потребуется знать не только PID для группы, но и службы, связанные с PID.
Чтобы получить эту информацию, добавим параметр -l следующим образом:
Теперь мы видим PID и перечисленные сервисы
Вы также можете использовать pgrep для перечисления процесса пользователем.
Если вы выпустили команду pgrep -U root, вы увидите каждый PID, принадлежащий пользователю root (что будет значительным числом).
Если вы выпустили ту же самую команду с использованием определенного пользователя (кроме root), скорее всего, список будет значительно короче.
Например, pgrep -U jack (на моем сервере) возвращает PID:
Чтобы узнать, какие службы связаны с этими PID, выполните команду:
Теперь мы видим, какие службы и PID принадлежат пользователю jack:
Лучший способ узнать больше – выдать команды man pidof и man pgrep для чтения страниц руководства для каждой команды.
Эти две команды должны легко вставляться в панель инструментов администратора Linux и помогать вам постоянно.
Источник
Как использовать команду ps для мониторинга процессов Linux
ps (processes status — статус процессов) — это встроенная утилита Unix/Linux для просмотра информации, касающейся выбора запущенных процессов в системе: она считывает эту информацию из виртуальных файлов в файловой системе /proc. Это одна из важных утилит для системного администрирования, особенно в рамках мониторинга процессов, чтобы помочь вам понять, что происходит в системе Linux.
Программа ps имеет множество опций для манипулирования выходными данными, однако вы найдёте небольшое количество из них практически полезными для ежедневного использования.
Утилита ps выводит снимок процессов на вашем компьютере Linux. Вы сможете найти процессы по имени, пользователю или даже терминалу с таким количеством деталей, сколько вам нужно. В этой статье подготовлено множество примеров использования ps.
Управление процессами в Linux
Сердцем всех Linux и Unix-подобных операционных систем является ядро. Среди его многочисленных обязанностей — распределение системных ресурсов, таких как оперативная память и процессорное время. Они должны выполняться в режиме реального времени, чтобы все запущенные процессы получали свою справедливую долю в соответствии с приоритетом каждой задачи.
Иногда задачи могут блокироваться, или зацикливаться, или перестать отвечать по другим причинам. Или они могут продолжать работать, но сожрать слишком много процессорного времени или оперативной памяти, или вести себя каким-то похожим антисоциальным образом. Иногда задачи должны быть убиты для сохранения стабильной работы системы. Разумеется, первых шаг заключается в идентификации проблемного процесса.
Но, возможно, у вас вообще нет проблем с задачами или производительностью. Возможно, вам просто любопытно, какие процессы выполняются на вашем компьютере, и вы хотели бы заглянуть под капот операционной системы Linux. Команда ps удовлетворяет обоим этим требованиям. Она даёт вам снимок того, что происходит внутри вашего компьютера «прямо сейчас».
ps достаточно гибка, чтобы предоставить вам именно ту информацию, которая вам нужна, именно в том формате, который вам нравится. На самом деле, у ps очень много опций. Опции, описанные здесь, будут соответствовать большинству обычных потребностей. Если вы хотите изучить команду ps ещё глубже, то знакомство с командой ps в этой статье и примеры использования ps облегчат вам восприятие справочной страницы.
Программа для показа процессов в Linux
Самый простой способ использовать ps — запустить её без параметров:
ps
ps покажет список процессов в данном терминале.
В выводе присутствует четыре столбца:
- PID: идентификационный номер процесса.
- TTY: имя консоли, на которой пользователь выполнил вход.
- TIME: количество времени центрального процессора, которое потребил процесс.
- CMD: имя команды, которая запустила процесс
Как увидеть все процессы в Linux
Добавление опции -e (выбрать все процессы) сделает так, что ps перечислит процессы, которые были запущены всеми пользователями, а не только пользователем, который запускает команду ps. Поскольку это будет длинный список, то вы можете добавить команду less.
Список процессов с возможностью прокрутки в команде less:
Теперь записей о процессах намного больше, но мы видим те же четыре столбца, что и раньше. Вопросительный знак (?) в столбце TTY означает, что процесс запускался не из окна терминала.
Отображение иерархии процессов (дерево процессов в Linux)
Если вы видите, какие процессы запустили другие процессы, то иногда это может помочь выяснить проблему или определить конкретный процесс. Для этого мы используем опцию -H.
Отступы указывают, какие процессы являются родителями каких других процессов.
Чтобы добавить немного ясности, мы можем попросить ps добавить несколько линий ASCII и нарисовать иерархию в виде дерева. Это можно сделать опцией —forest.
Это позволить проще отслеживать, какие процессы являются родителями других процессов.
Как напечатать дерево определённого процесса
Вы можете получить дерево процессов только нужной вам программы следующим образом (замените sshd на интересующий вас процесс):
Об опции -C будет рассказано далее в этой статье.
Фильтрация вывода ps по определённым строкам (по имени команды, например)
Вы можете направить вывод из ps через grep и найти нужные записи о процессах по любым строкам. Здесь мы ищем записи, соответствующие поисковому запросу «firefox»:
В этом случае выходные данные представляют собой одну запись для интересующего нас процесса. Конечно, если бы мы запустили несколько экземпляров Firefox, в списке было бы более одного элемента.
Больше столбцов в выводе ps
Чтобы добавить дополнительные столбцы к выводу, используйте параметр -f (полный формат).
Дополнительный набор столбцов включён в вывод ps.
Из новых столбов появились:
- UID: идентификатор пользователя владельца этого процесса.
- PPID: идентификатор родительского процесса.
- C: Количество детей, которые есть у процесса.
- STIME: Время начала. Время, когда процесс был запущен.
Используя опцию -F (дополнительный полный формат), мы можем получить ещё больше столбцов:
Если у вас маленькое окно терминала, то столбцы, которые мы получаем в этот раз, требуют прокрутки экрана в сторону, чтобы показать их все. Нажатие клавиши «Стрелка вправо» смещает дисплей влево.
Теперь добавились следующие столбцы:
- SZ: размер страниц ОЗУ образа процесса.
- RSS: резидентный размер набора. Это не подкачанная физическая память, используемая процессом.
- PSR: процессор, которому назначен процесс.
Нужно ли указывать дефис перед опциями ps
В некоторых примерах вы можете увидеть использование ps с опциями без дефиса или с длинными вариантами написания опций в стиле GNU. Для совместимости, ps поддерживает все три формата. Опции без дефиса — это стиль BSD и значение опций с дефисом и без может быть различным!
Пример показа процессов в формате BSD:
В этой команде значение опций следующее:
- u — ориентированный на пользователя формат
- a — убирает ограничение «только свои процессы»
- x — убирает ограничение «только процессы с терминалом»
Проще говоря, если использовать вместе a и x, то будут показаны все процессы.
Нужно быть аккуратным, и не забывать ставить дефис если вы используете опции UNIX, поскольку в случае неопределённости ps будет пытаться трактовать в разных вариантах. В этой инструкции кроме рассмотренного примера везде используются опции UNIX.
Поиск процессов по идентификатору процесса
Как только вы нашли идентификатор процесса для интересующего вас процесса, вы можете использовать его с командой ps, чтобы вывести подробную информацию об этом процессе. Для этого используйте спользуйте параметр -p после которого укажите число — идентификатор процесса:
Можно указывать более чем один идентификатор процесса, перечислив их через запятую или через пробел.
Поиск процессов по имени команды
Опция -C (КОМАНДА) позволяет вам искать процесс, используя имя команды. То есть имя команды, которая запустила процесс. Это несколько отличается от строки команды, которая может включать имена путей и параметры или опции.
Выведена информация только о процессе, запущенным указанной командой:
Процессов может быть несколько если запущено множество экземпляров данной команды:
Как увидеть потоки процесса
Чтобы вывести все потоки процесса, используйте флаг -H. Опция -L приведёт к показу столбца LWP (light weight process — процесс с малым весом), а также столбца NLWP (number of light weight process — число процессов с малым весом).
Как увидеть процессы определённого пользователя
Чтобы увидеть процессы, принадлежащие конкретному пользователю, используйте опцию -u (СПИСОК ПОЛЬЗОВАТЕЛЕЙ):
Отображаются процессы, принадлежащие учётной записи пользователя mial.
Как вывести все процессы запущенные пользователем root
Это частный случай показа процессов определённого пользователя.
Команда ниже позволяет вам просматривать каждый процесс, работающий с привилегиями пользователя root (действительный и эффективный идентификатор) в формате пользователя.
Просмотр групповых процессов
Если вы хотите перечислить все процессы, принадлежащие определённой группе (реальный идентификатор группы (RGID) или имя), введите:
Чтобы вывести список всех процессов, принадлежащих эффективному имени группы (или сеанса), введите.
Листинг процессов по терминалам
Чтобы увидеть процессы, связанные с TTY, используйте опцию -t (УКАЖИТЕ TTY). При использовании без номера TTY опция -t сообщает о процессах, связанных с текущим окном терминала.
Все перечисленные процессы связаны с pts/1.
Выбор столбцов для отображения
С опцией -o (ФОРМАТ) вы можете выбрать, какие столбцы вы хотите включить в вывод ps. Столбцы нужно указывать по имени. В руководстве по ps:
вы найдёте длинный список имён столбцов в разделе STANDARD FORMAT SPECIFIERS.
В следующем примере мы выводим потребление процессом времени центрального процессора (pcpu), потребление процессором памяти (pmem) и запустившая его команда вместе с опциями (args):
Обратите внимание, что опция -o не добавляет столбцы в стандартным, а выводит только запрошенные поля.
Сортировка вывода по столбцам
Вы можете отсортировать вывод, используя опцию —sort. Давайте отсортируем вывод по столбцу CPU:
Дефис «—» означает сортировку от большего к меньшему.
Чтобы увидеть десять самых ресурсоемких процессов, передайте вывод через команду head:
Мы получаем отсортированный, усечённый список.
Если мы добавим больше столбцов для вывода, мы сможем отсортировать по большему количеству столбцов.
Без дефиса или со знаком «+» сортировка выполняется от меньшего к большему.
Добавим в сортировку столбец pmem:
Сортировка по-прежнему выполняется по значению pcpu, но если для каких-то записей эти значения одинаковые, то выполняется сортировка по pmem для этих значений.
Давайте сделаем вывод результатов немного более полезным и добавим столбец идентификатора процесса (pid), чтобы мы могли видеть номер процесса каждого процесса в нашем листинге.
Теперь мы можем идентифицировать процессы.
Все возможные поля ps
Чтобы увидеть все возможные для вывода поля ps выполните такую команду:
Эти поля вы можете применять с опцией -o.
Примеры настраиваемого вывода ps
Команда ниже позволяет вам увидеть PID, PPID, имя пользователя и команду процесса.
Ниже приведён ещё один пример пользовательского формата вывода, показывающий группу файловой системы, значение nice, время начала и истекшее время процесса.
Как найти имя процесса по PID
Чтобы найти имя процесса, используя его PID.
Показать родительский и дочерний процессы
Чтобы выбрать конкретный процесс по его имени, используйте флаг -C, это также отобразит все его дочерние процессы.
Чтобы найти все PID всех экземпляров процесса, что полезно при написании сценариев, которые должны считывать PID из выходных данных или файла std.
Как выключить процесс по идентификатору процесса
Мы рассмотрели ряд способов идентификации процессов, включая имя, команду, пользователя и терминал. Мы также рассмотрели способы идентификации процессов по их динамическим атрибутам, таким как использование процессора и памяти.
Так или иначе, мы можем определить процессы, которые работают. Зная их идентификатор процесса, мы можем (если нужно) остановить любой из этих процессов с помощью команды kill. Если бы мы хотели убить процесс 898, мы бы использовали этот формат:
Если все идёт хорошо, процесс молча завершается.
Как выключить процесс зная его имя
Команда pkill позволяет вам убивать процессы по имени. Убедитесь, что вы определили правильный процесс! Эта команда завершит процесс top.
Опять же, нет новостей, это хорошие новости. Процесс молча завершается.
Как остановить несколько процессов по имени
Если у вас запущено несколько копий процесса, или процесс породил несколько дочерних процессов (как это может сделать Google Chrome), как вы можете выключить их? Это так же просто. Мы используем команду killall.
У нас запущено два экземпляра top:
Мы можем завершить их обоих с помощью этой команды:
Отсутствие ответа означает отсутствие проблем, т. е. оба эти процессы были остановлены.
Прежде чем убить процесс
Убедитесь, что это тот, который вам нужен, и убедитесь, что это не вызовет никаких проблем. В частности, стоит проверить с помощью параметров -H и —forest, чтобы убедиться, что в нем нет важных дочерних процессов, о которых вы забыли.
Устранение неполадок производительности системы Linux
Если ваша система не работает должным образом, например, если она необычно медленная, вы можете выполнить некоторые неполадки системы следующим образом.
Чтобы найти все процессы, потребляющие больше всего памяти и ЦПУ в Linux:
Вывод информации о безопасности
Показать контекст безопасности (специально для SELinux) можно следующим образом:
С помощью этой команды вы также можете отобразить информацию о безопасности в определённом пользователем формате:
Выполните мониторинг процессов в режиме реального времени с помощью утилиты watch
Наконец, поскольку ps отображает статическую информацию, вы можете использовать утилиту watch для непрерывного обновления информации на экране и мониторинга процессов в режиме реального времени с повторяющимся выводом. В этом примере информация будет одновляться через каждую секунду. Укажите свою собственную команду ps для соответствия вашей цели.
Источник