Команда PS в Linux
Команда PS в Linux
Наши партнеры
Библиотека сайта rus-linux.net
НАЗВАНИЕ
ps — выдача информации о состоянии процессов
ОПИСАНИЕ
Команда ps выдает информацию об активных процессах. По умолчанию информация дается только о процессах, ассоциированных с данным терминалом. Выводятся идентификатор процесса, идентификатор терминала, истраченное к данному моменту время ЦП и имя команды. Если нужна иная информация, следует пользоваться опциями.
Некоторые опции имеют один аргумент или список аргументов. Аргументы в списке могут быть либо отделены друг от друга запятыми, либо все вместе заключены в двойные кавычки и отделены пробелами или запятыми. Аргументы в списке_процессов и в списке_групп должны быть числами.
Командой ps обрабатываются следующие опции: -e Вывести информацию обо всех процессах.
-d Вывести информацию обо всех процессах, кроме лидеров групп.
-a Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.
-f Генерировать полный листинг (см. ниже разъяснение смысла колонок).
-l Генерировать листинг в длинном формате (см. ниже).
-n файл_с_системой Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.
-t список_терминалов Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал — это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.
-p список_идентификаторов_процессов Выдавать информацию только об указанных процессах.
-u список_идентификаторов_пользователей Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f — в символьном.
-g список_идентификаторов_лидеров_групп Выводить информацию только о процессах, для которых указаны идентификаторы лидеров групп. Лидер группы — это процесс, номер которого идентичен его идентификатору группы. Shell, запускаемый при входе в систему, является стандартным примером лидера группы процессов.
При указании опции -f ps пытается определить имя команды и аргументы, с которыми был создан процесс, исследуя пользовательский блок процесса. Если это не удается, имя процесса выводится так же, как и при отсутствии опции -f, только заключается в квадратные скобки.
Процесс, закончивший выполнение своей программы, и имеющий родительский процесс, не дождавшийся еще завершения, в качестве имени программы получает <defunct>.
СМ. ТАКЖЕ kill.
СЮРПРИЗЫ
Во время выполнения команды ps положение вещей может измениться; таким образом, ps дает лишь хорошее приближение к действительности.
Некоторые сведения, относящиеся к процессам, отмеченным как <defunct>, не соответствуют действительности.
Если не указана ни одна из опций -t, -p, -u, -g, команда ps проверяет стандартный ввод, стандартный вывод и стандартный протокол (в указанном порядке) для определения управляющего терминала и пытается вывести информацию о процессах, ассоциированных с этим терминалом. В ситуации, когда все три стандартных направления ввода/вывода переназначены, ps не может найти и выдать имя управляющего терминала.
Команда ps -ef может не отметить начало входа в систему, а вывести сведения о последнем запуске для данной терминальной линии.
Команда Ps в Linux (список процессов)
В Linux запущенный экземпляр программы называется процессом. Иногда при работе на машине Linux вам может потребоваться выяснить, какие процессы выполняются в данный момент.
Существует ряд команд, которые вы можете использовать для поиска информации о запущенных процессах, из которых наиболее часто используются ps , pstree и top .
В этой статье объясняется, как использовать команду ps для вывода списка запущенных в данный момент процессов и отображения информации об этих процессах.
Как использовать команду ps
Общий синтаксис команды ps следующий:
По историческим причинам и из соображений совместимости команда ps принимает несколько различных типов параметров:
- Параметры стиля UNIX, которым предшествует одиночный дефис.
- Параметры стиля BSD, используемые без тире.
- Параметры GNU с двумя дефисами перед ними.
Можно смешивать разные типы опций, но в некоторых конкретных случаях могут возникать конфликты, поэтому лучше придерживаться одного типа опций.
Опции BSD и UNIX можно сгруппировать.
В простейшей форме, при использовании без какой-либо опции, ps напечатает четыре столбца информации как минимум для двух процессов, запущенных в текущей оболочке, самой оболочки и процессов, запущенных в оболочке при вызове команды.
Вывод включает информацию о оболочке ( bash ) и процессе, запущенном в этой оболочке ( ps , команда, которую вы ввели):
Четыре столбца помечены как PID , TTY , TIME и CMD .
- PID — идентификатор процесса. Обычно при запуске команды ps наиболее важной информацией, которую ищет пользователь, является PID процесса. Знание 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 — загрузка процессора процессом.
- %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 .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Команда Ps в Linux (Список Процессов)
В 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 свой терминал.
Команда ps в Linux
Утилита ps одна из самых простых и в то же время часто используемых программ для просмотра списка процессов в Linux. Она не поддерживает интерактивный режим, зато имеет множество опций для настройки вывода тех или иных параметров процессов в Linux.
В этой статье мы рассмотрим как пользоваться ps, что с помощью неё можно посмотреть, а также какие основные опции можно использовать.
Что такое процесс?
Чтобы понять что отображает команда ps сначала надо разобратся что такое процесс. Процесс Linux — это экземпляр программы, запущенный в памяти. Все процессы можно разделить на обычные и фоновые. Более подробно об этом написано в статье управление процессами Linux. Linux — это многопользовательская система, каждый пользователь может запускать одни и те же программы, и даже один пользователь может захотеть запустить несколько экземпляров одной программы, поэтому ядру нужно как-то идентифицировать такие однотипные процессы. Для этого каждому процессу присваивается PID (Proccess Identificator).
Каждый из процессов может находиться в одном из таких состояний:
- Запуск — процесс либо уже работает, либо готов к работе и ждет, когда ему будет дано процессорное время;
- Ожидание — процессы в этом состоянии ожидают какого-либо события или освобождения системного ресурса. Ядро делит такие процессы на два типа — те, которые ожидают освобождения аппаратных средств и приостановление с помощью сигнала;
- Остановлено — обычно, в этом состоянии находятся процессы, которые были остановлены с помощью сигнала;
- Зомби — это мертвые процессы, они были остановлены и больше не выполняются, но для них есть запись в таблице процессов, возможно, из-за того, что у процесса остались дочерние процессы.
А теперь давайте перейдем ближе к практике.
Команда ps в Linux
Сначала рассмотрим общий синтаксис команды, здесь все очень просто:
$ ps опции
$ ps опции | grep параметр
Во втором варианте мы используем утилиту grep для того, чтобы отобрать нужные нам процессы по определенному критерию. Теперь рассмотрим опции утилиты. Они делятся на два типа — те, которые идут с дефисом Unix и те, которые используются без дефиса — BSD. Лучше пользоваться только опциями Unix, но мы рассмотрим и одни и другие. Заметьте, что при использовании опций BSD, вывод утилиты будет организован в BSD стиле.
- -A, -e, (a) — выбрать все процессы;
- -a — выбрать все процессы, кроме фоновых;
- -d, (g) — выбрать все процессы, даже фоновые, кроме процессов сессий;
- -N — выбрать все процессы кроме указанных;
- -С — выбирать процессы по имени команды;
- -G — выбрать процессы по ID группы;
- -p, (p) — выбрать процессы PID;
- —ppid — выбрать процессы по PID родительского процесса;
- -s — выбрать процессы по ID сессии;
- -t, (t) — выбрать процессы по tty;
- -u, (U) — выбрать процессы пользователя.
- -с — отображать информацию планировщика;
- -f — вывести максимум доступных данных, например, количество потоков;
- -F — аналогично -f, только выводит ещё больше данных;
- -l — длинный формат вывода;
- -j, (j) — вывести процессы в стиле Jobs, минимум информации;
- -M, (Z) — добавить информацию о безопасности;
- -o, (o) — позволяет определить свой формат вывода;
- —sort, (k) — выполнять сортировку по указанной колонке;
- -L, (H)— отображать потоки процессов в колонках LWP и NLWP;
- -m, (m) — вывести потоки после процесса;
- -V, (V) — вывести информацию о версии;
- -H — отображать дерево процессов;
Теперь, когда вы знаете синтаксис и опции, можно перейти ближе к практике. Чтобы просто посмотреть процессы в текущей оболочке используется такая команда терминала ps:
Все процессы, кроме лидеров групп, в том же режиме отображения:
Все процессы, включая фоновые и лидеры групп:
Чтобы вывести больше информации о процессах используйте опцию -f:
При использовании опции -f команда выдает такие колонки:
- UID — пользователь, от имени которого запущен процесс;
- PID — идентификатор процесса;
- PPID — идентификатор родительского процесса;
- C — процент времени CPU, используемого процессом;
- STIME — время запуска процесса;
- TTY — терминал, из которого запущен процесс;
- TIME — общее время процессора, затраченное на выполнение процессора;
- CMD — команда запуска процессора;
- LWP — показывает потоки процессора;
- PRI — приоритет процесса.
Например, также можно вывести подробную информацию обо всех процессах:
Больше информации можно получить, использовав опцию -F:
Эта опция добавляет такие колонки:
- SZ — это размер процесса в памяти;
- RSS — реальный размер процесса в памяти;
- PSR — ядро процессора, на котором выполняется процесс.
Если вы хотите получить еще больше информации, используйте вместо -f опцию -l:
Эта опция добавляет отображение таких колонок:
- F — флаги, ассоциированные с этим процессом;
- S — состояние процесса;
- PRI — приоритет процесса в планировщике ядра Linux;
- NI — рекомендованный приоритет процесса, можно менять;
- ADDR — адрес процесса в памяти;
- WCHAN — название функции ядра, из-за которой процесс находится в режиме ожидания.
Дальше мы можем отобрать все процессы, запущенные от имени определенного пользователя:
С помощью опции -H можно отобразить дерево процессов:
Если вас интересует информация только об определенном процессе, то вы можете использовать опцию -p и указать PID процесса:
Через запятую можно указать несколько PID:
Опция -С позволяет фильтровать процессы по имени, например, выберем только процессы chrome:
Дальше можно использовать опцию -L чтобы отобразить информацию о процессах:
Очень интересно то, с помощью опции -o можно настроить форматирование вывода, например, вы можете вывести только pid процесса и команду:
Вы можете выбрать такие колонки для отображения: pcpu, pmem, args, comm, cputime, pid, gid, lwp, rss, start, user, vsize, priority. Для удобства просмотра можно отсортировать вывод программы по нужной колонке, например, просмотр процессов, которые используют больше всего памяти:
Или по проценту загрузки cpu:
ps -FA —sort pcpu
Ещё одна опция — -M, которая позволяет вывести информацию про права безопасности и флаги SELinux для процессов:
Общее количество запущенных процессов Linux можно узнать командой:
Мы рассмотрели все основные возможности утилиты ps. Дальше вы можете поэкспериментировать с её параметрами и опциями чтобы найти нужные комбинации, также можно попытаться применить опции BSD.
Выводы
Команда ps Linux может быть очень полезной если система перегружена и вам необходимо срочно узнать запущенные процессы linux чтобы освободить память или ресурсы процессора. Интерактивные средства не всегда могут помочь, потому что они потребляют слишком много ресурсов. С другой стороны ps дает большую гибкость поскольку утилита имеет множество опций и параметров. Во всяком случае теперь вы знаете как вывести список процессов. Если остались вопросы, спрашивайте в комментариях!