Команда Linux ps
позволяет вывести список текущих процессов на вашем сервере. Она считывает информацию из файлов виртуальной файловой системы /proc
.
Утилита обычно используется вместе с командами 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 совсем несложно. Если вы начинающий системный администратор, то вскоре поймете насколько она облегчает вашу работу.