Команда Linux ps

Опубликовано admin - сб, 07/16/2022 - 11:11

Команда Linux ps позволяет вывести список текущих процессов на вашем сервере. Она считывает информацию из файлов виртуальной файловой системы /proc.

Просмотр процессов Linux командой ps с примерами

Утилита обычно используется вместе с командами grep, а также less или more. Они помогают отфильтровать довольно длинные выходные данные.

Содержание

Синтаксис

ps [опции]

Опции

-A, -e
Все процессы
-a
Все с tty, кроме лидеров сеансов
 a
Все с tty, включая других пользователей
-d
Все, кроме лидеров сессий
-N, --deselect
Отменить выбор
 r
Только запущенные процессы
 T
Все процессы на этом терминале
 x
Процессы без управления tty
-C <command>
Имя команды
-p, p, --pid <PID>
Идентификатор процесса
-U, --User <UID>
Имя пользователя
-f
Полный формат

Примеры использования команды ps

Без опций

Запуск без опций:

oleg@mobile:~:$ ps
    PID TTY          TIME CMD
    661 pts/0    00:00:00 bash
 100194 pts/0    00:00:00 ps

На выходе получим:

PID
Уникальный идентификатор процесса
TTY
Тип терминала
TIME
Общее время использования процессором процессорного времени
CMD
Имя команды, запустившей процесс

Все процессы

Вывод всех запущенных процессов (опция -e):

oleg@mobile:~:$ ps -e
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 netns
      7 ?        00:00:00 kworker/0:0H-events_highpri
      9 ?        00:00:00 kworker/0:1H-kblockd
...
  91237 ?        00:00:00 bash
  91253 ?        00:00:35 geany
  91348 pts/1    00:00:00 bash
  97188 ?        00:00:13 chromium
  97211 ?        00:00:04 chromium
  97250 ?        00:00:00 chromium
  97370 ?        00:00:00 kworker/u16:2-phy1
 101879 ?        00:00:00 sleep
 101880 pts/0    00:00:00 ps

Все процессы в полном формате

Вывод всех процессов в полном формате (опции -e и -f):

oleg@mobile:~:$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 05:35 ?        00:00:01 /sbin/init
root           2       0  0 05:35 ?        00:00:00 [kthreadd]
root           3       2  0 05:35 ?        00:00:00 [rcu_gp]
root           4       2  0 05:35 ?        00:00:00 [rcu_par_gp]
root           5       2  0 05:35 ?        00:00:00 [netns]
root           7       2  0 05:35 ?        00:00:00 [kworker/0:0H-events_highpri]
root           9       2  0 05:35 ?        00:00:01 [kworker/0:1H-events_highpri]
root          10       2  0 05:35 ?        00:00:00 [mm_percpu_wq]
...
root      151835       2  0 11:47 ?        00:00:01 [kworker/u16:3-events_unbound]
oleg      152597     789 12 11:49 ?        00:00:59 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
root      152704       2  0 11:49 ?        00:00:00 [kworker/u16:4-phy0]
oleg      154608     789  0 11:54 ?        00:00:00 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
root      155042       2  0 11:55 ?        00:00:00 [kworker/u16:1-phy0]
oleg      155457     789  0 11:56 ?        00:00:00 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
oleg      155482     789  0 11:56 ?        00:00:00 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
oleg      155523     789  0 11:56 ?        00:00:00 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
oleg      155813     789  0 11:57 ?        00:00:00 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
oleg      156001     789  0 11:57 ?        00:00:00 /usr/lib/chromium/chromium --type=renderer --enable-crashpad --crashpad-handler-pid=
oleg      156116     450  0 11:57 ?        00:00:00 sleep 2
oleg      156117     661  0 11:57 pts/0    00:00:00 ps -ef

Все, кроме лидеров сессии

Вывод всех процессов, кроме лидеров сессии (опция -d):

oleg@mobile:~:$ ps -d
    PID TTY          TIME CMD
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 netns
      7 ?        00:00:00 kworker/0:0H-events_highpri
      9 ?        00:00:00 kworker/0:1H-events_highpri
     10 ?        00:00:00 mm_percpu_wq
...

Лидером сеанса является процесс, запускающий другие процессы.

Лишь лидеры сессии

Вывод лишь лидеров процесса (опции -d и -N):    

oleg@mobile:~:$ ps -d -N
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
    201 ?        00:00:09 systemd-journal
    213 ?        00:00:00 systemd-udevd
    313 ?        00:00:00 mount.ntfs
    314 ?        00:00:00 mount.ntfs
    328 ?        00:00:00 systemd-timesyn
    332 ?        00:00:00 crond
    333 ?        00:00:02 dbus-daemon
    334 ?        00:00:00 systemd-logind
    344 ?        00:00:06 NetworkManager
    345 ?        00:00:01 wpa_supplicant
    351 ?        00:00:00 sshd
    353 tty1     00:00:00 agetty
    354 ?        00:00:00 slim
    393 tty7     00:04:27 Xorg
    440 ?        00:00:00 systemd
    497 ?        00:00:00 dbus-daemon
    498 ?        00:00:00 at-spi-bus-laun
    510 ?        00:00:00 gvfsd
    538 ?        00:00:00 polkitd
    661 pts/0    00:00:00 bash
   3819 ?        00:01:40 pulseaudio
   3832 ?        00:00:00 rtkit-daemon
  91348 pts/1    00:00:00 bash

Процессы, связанные лишь с этим терминалом

Вывод всех процессов, связанных лишь с этим терминалом (опция T):

oleg@mobile:~:$ ps T
    PID TTY      STAT   TIME COMMAND
    661 pts/0    Ss     0:00 /bin/bash
 104996 pts/0    R+     0:00 ps T

Лишь запущенные процессы

Вывод лишь запущенных процессов (опция r):

oleg@mobile:~:$ ps r
    PID TTY      STAT   TIME COMMAND
 106301 pts/0    R+     0:00 ps r

Определённый процесс по идентификатору

Вывод определённого процесса по идентификатору (PID):

oleg@mobile:~:$ ps -p 91237
    PID TTY          TIME CMD
  91237 ?        00:00:00 bash

Вывод нескольких определённых процессов:

oleg@mobile:~:$ ps -p "91237 91253"
    PID TTY          TIME CMD
  91237 ?        00:00:00 bash
  91253 ?        00:00:56 geany

Идентификаторы заключаются в кавычки.

Можно перечислять идентификаторы через запятую. Кавычки в этом случае не нужны:

oleg@mobile:~:$ ps -p 91237,91253
    PID TTY          TIME CMD
  91237 ?        00:00:00 bash
  91253 ?        00:00:56 geany

Если вы не знаете идентификатора нужной команды, то поступите следующим образом:

oleg@mobile:~:$ ps -C geany
    PID TTY          TIME CMD
  91253 ?        00:01:01 geany

В данном случае мы выяснили то, что geany имеет идентификатор 91253.

Процессы, выполняемые определённым пользователем

Вывод процессов, выполняемых пользователем oleg (опция U):

oleg@mobile:~:$ ps U oleg
    PID TTY      STAT   TIME COMMAND
    440 ?        Ss     0:00 /usr/lib/systemd/systemd --user
    441 ?        S      0:00 (sd-pam)
    447 ?        S      0:02 dwm
    450 ?        S      0:16 /bin/bash -login /home/oleg/.xinitrc
    451 ?        Sl     0:08 sakura
    454 ?        Sl     6:32 /usr/lib/chromium/chromium --enable-crashpad
...
 111952 ?        S      0:00 sleep 2
 111953 pts/0    R+     0:00 ps U oleg

Вместе с grep, more, less

Использование команд more или less позволяет выводить результаты постранично:

oleg@mobile:~:$ ps -ef | more
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 05:35 ?        00:00:01 /sbin/init
root           2       0  0 05:35 ?        00:00:00 [kthreadd]
root           3       2  0 05:35 ?        00:00:00 [rcu_gp]
...
root          39       2  0 05:35 ?        00:00:00 [kblockd]
root          40       2  0 05:35 ?        00:00:00 [blkcg_punt_bio]
root          41       2  0 05:35 ?        00:00:01 [kworker/1:1H-kblockd]
root          42       2  0 05:35 ?        00:00:00 [ata_sff]
--Далее--

Использование команды grep позволяет фильтровать результаты:

oleg@mobile:~:$ ps -ef | grep php-fpm
root      114345       1  0 10:15 ?        00:00:00 php-fpm: master process (/etc/php/php-fpm.conf)
http      114359  114345  0 10:15 ?        00:00:00 php-fpm: pool www
http      114360  114345  0 10:15 ?        00:00:00 php-fpm: pool www
oleg      117257     661  0 10:22 pts/0    00:00:00 grep php-fpm

В данном случае были выведены лишь строки, содержащие php-fpm.

Заключение

Научиться пользоваться командой ps в Linux совсем несложно. Если вы начинающий системный администратор, то вскоре поймете насколько она облегчает вашу работу.

Поделиться с друзьями