В Linux запущенный экземпляр программы называется процессом. Иногда при работе на машине Linux вам может потребоваться выяснить, какие процессы выполняются в данный момент.
Существует ряд команд, которые вы можете использовать для поиска информации о запущенных процессах, из которых наиболее часто используются ps
, pstree
и top
.
В этой статье объясняется, как использовать команду ps
для вывода списка запущенных в данный момент процессов и отображения информации об этих процессах.
Содержание
Как использовать команду ps
Общий синтаксис команды ps
следующий:
ps [OPTIONS]
По историческим причинам и из соображений совместимости команда ps
принимает несколько различных типов параметров:
- Параметры стиля UNIX, которым предшествует одиночный дефис.
- Параметры стиля BSD, используемые без тире.
- Параметры GNU с двумя дефисами перед ними.
Можно смешивать разные типы опций, но в некоторых конкретных случаях могут возникать конфликты, поэтому лучше придерживаться одного типа опций.
Опции BSD и UNIX можно сгруппировать.
В простейшей форме, при использовании без какой-либо опции, ps
напечатает четыре столбца информации как минимум для двух процессов, запущенных в текущей оболочке, самой оболочки и процессов, запущенных в оболочке при вызове команды.
ps
Вывод включает информацию о оболочке ( bash
) и процессе, запущенном в этой оболочке ( ps
, команда, которую вы ввели):
PID TTY TIME CMD
1809 pts/0 00:00:00 bash
2043 pts/0 00:00:00 ps
Четыре столбца помечены как PID
, TTY
, TIME
и CMD
.
PID
— идентификатор процесса. Обычно при запуске командыps
наиболее важной информацией, которую ищет пользователь, является PID процесса. Знание PID позволяет устранить неисправный процесс .-
TTY
— имя управляющего терминала для процесса. -
TIME
— совокупное время ЦП процесса в минутах и секундах. -
CMD
— имя команды, которая использовалась для запуска процесса.
Приведенный выше вывод не очень полезен, поскольку не содержит много информации. Настоящая мощь команды ps
проявляется при запуске с дополнительными параметрами.
Команда ps
принимает огромное количество параметров, которые можно использовать для отображения определенной группы процессов и различной информации о процессе, но при повседневном использовании требуется лишь несколько.
ps
чаще всего используется со следующей комбинацией параметров:
Форма BSD :
ps aux
- Параметр
a
указываетps
отображать процессы всех пользователей. Не отображаются только процессы, не связанные с терминалом, и процессы руководителей групп. -
u
обозначает ориентированный на пользователя формат, который предоставляет подробную информацию о процессах. - Параметр
x
указываетps
перечислить процессы без управляющего терминала. В основном это процессы, которые запускаются во время загрузки и работают в фоновом режиме .
Команда отображает информацию в одиннадцати столбцах, обозначенных USER
, PID
, %CPU
, %MEM
, VSZ
, RSS
, STAT
, START
, TTY
, TIME
и CMD
.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 77616 8604 ? Ss 19:47 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 19:47 0:00 [kthreadd]
...
Мы уже объяснили метки PID
, TTY
, TIME
и CMD
. Вот объяснение других этикеток:
USER
— пользователь, запускающий процесс.-
%CPU
— загрузка процессора процессом. -
%MEM
— процентное отношение размера резидентного набора процесса к физической памяти на машине. -
VSZ
— размер виртуальной памяти процесса в КиБ. -
RSS
— размер физической памяти, которую использует процесс. -
STAT
— код состояния процесса, напримерZ
(зомби),S
(спящий) иR
(запущенный). -
START
— время начала команды.
Параметр f
указывает ps
отображать древовидное представление родительских и дочерних процессов:
ps auxf
Команда ps
также позволяет сортировать вывод. Например, чтобы отсортировать вывод на основе использования памяти , вы должны использовать:
ps aux --sort=-%mem
Форма UNIX :
ps -ef
- Параметр
-e
указываетps
отображать все процессы. -
-f
обозначает полноформатный список, который предоставляет подробную информацию о процессах.
Команда отображает информацию в восьми столбцах, обозначенных UID
, PID
, PPID
, C
, STIME
, TIME
и CMD
.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:47 ? 00:00:01 /sbin/init
root 2 0 0 19:47 ? 00:00:00 [kthreadd]
...
Метки, которые еще не объяснены, имеют следующее значение:
UID
— то же самое, что иUSER
, пользователь, запускающий процесс.-
PPID
— идентификатор родительского процесса. -
C
— То же, что и%CPU
, загрузка процессора процессом. -
STIME
— то же самое, что иSTART
, время начала команды.
Чтобы просмотреть только процессы, запущенные от имени конкретного пользователя, введите следующую команду, где linuxize
— это имя пользователя:
ps -f -U linuxize -u linuxize
Пользовательский формат
Параметр o
позволяет указать, какие столбцы будут отображаться при запуске команды ps
.
Например, чтобы распечатать информацию только о PID
и COMMAND
, вы должны выполнить одну из следующих команд:
ps -efo pid,comm
ps auxo pid,comm
Использование ps
с другими командами
ps
можно использовать в сочетании с другими командами через конвейер.
Если вы хотите отобразить вывод команды ps
, по одной странице за раз передайте его команде less
:
ps -ef | less
Вывод команды ps
можно отфильтровать с помощью grep
. Например, чтобы показать только процесс, принадлежащий пользователю root, вы должны запустить:
ps -ef | grep root
Выводы
Команда ps
— одна из наиболее часто используемых команд при устранении неполадок в системах Linux. У него много опций, но обычно большинство пользователей используют ps aux
или ps -ef
для сбора информации о запущенных процессах.
Чтобы получить дополнительную информацию о ps
, введите в терминале man ps
.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.