Команда ps в Linux с примерами
Как мы все знаем, Linux - это многозадачная и многопользовательская система. Таким образом, это позволяет нескольким процессам работать одновременно, не мешая друг другу. Процесс - одна из важных фундаментальных концепций ОС Linux. Процесс - это исполняемый экземпляр программы, выполняющий различные задачи в операционной системе.
Linux предоставляет нам утилиту ps для просмотра информации, относящейся к процессам в системе, которая расшифровывается как «Статус процесса». Команда ps используется для вывода списка запущенных в данный момент процессов и их идентификаторов PID, а также некоторой другой информации, которая зависит от различных параметров. Он считывает информацию о процессе из виртуальных файлов в файловой системе / proc. / proc содержит виртуальные файлы, поэтому его называют виртуальной файловой системой.
ps предоставляет множество возможностей для управления выводом в соответствии с нашими потребностями.
Синтаксис -
ps [параметры]
Параметры для команды ps:
- Простой выбор процесса: показывает процессы для текущей оболочки -
[root @ rhel7 ~] # пс PID TTY TIME CMD 12330 баллов / 0 00:00:00 баш 21621 баллов / 0 00:00:00 пс
Результат содержит четыре столбца информации.
Где,
PID - уникальный идентификатор процесса
TTY - тип терминала, в который вошел пользователь
ВРЕМЯ - количество процессора в минутах и секундах, в течение которого выполнялся процесс.
CMD - имя команды, запустившей процесс.Примечание. Иногда, когда мы выполняем команду ps , ВРЕМЯ отображается как 00:00:00. Это не что иное, как общее накопленное время использования ЦП для любого процесса, а 00:00:00 указывает на то, что ядро до сих пор не предоставило процессорное время. В приведенном выше примере мы обнаружили, что для bash не задано процессорное время. Это связано с тем, что bash - это просто родительский процесс для разных процессов, которым для выполнения требуется bash, а сам bash до сих пор не использует процессорное время.
- Просмотр процессов: просмотр всех запущенных процессов, используя любую из следующих опций с ps -
[root @ rhel7 ~] # ps -A [root @ rhel7 ~] # ps -e
- Просмотр процессов, не связанных с терминалом: просмотр всех процессов, кроме как лидеров сеанса, так и процессов, не связанных с терминалом.
[root @ rhel7 ~] # ps -a PID TTY TIME CMD 27011 баллов / 0 00:00:00 человек 27016 балл / 0 00:00:00 меньше 27499 баллов / 1 00:00:00 пс
Примечание. Вы можете подумать, что такое лидер сеанса? Каждой группе процессов предстоит уникальная сессия. Итак, лидер сеанса - это процесс, который запускает другие процессы. Идентификатор первого процесса любого сеанса аналогичен идентификатору сеанса.
- Просмотреть все процессы, кроме лидеров сеанса:
[root @ rhel7 ~] # ps -d
- Просмотреть все процессы, кроме тех, которые удовлетворяют указанным условиям (отменяет выбор):
Пример - если вы хотите видеть только лидера сеанса и процессы, не связанные с терминалом. Затем запустите[корень @ rhel7 ~] # ps -a -N ИЛИ [root @ rhel7 ~] # ps -a --deselect
- Просмотрите все процессы, связанные с этим терминалом:
[root @ rhel7 ~] # ps -T
- Посмотреть все запущенные процессы:
[root @ rhel7 ~] # ps -r
- Просмотреть все процессы, принадлежащие вам: Процессы, то есть тот же EUID, что и ps, что означает запуск команды ps, в данном случае root -
[root @ rhel7 ~] # ps -x
Выбор процесса по списку
Здесь мы обсудим, как получить список конкретных процессов с помощью команды ps. Эти параметры принимают один аргумент в виде списка, разделенного пробелами или запятыми. Их можно использовать несколько раз.
Например: ps -p «1 2» -p 3,4.
- Выберите процесс по имени команды. Это выбирает процессы, имя исполняемого файла которых указано в cmdlist. Возможно, вы не знаете идентификатор процесса, и с помощью этой команды будет проще выполнять поиск.
Синтаксис: ps -C имя_командыСинтаксис: ps -C имя_команды Пример : [root @ rhel7 ~] # ps -C dhclient PID TTY TIME CMD 19805? 00:00:00 dhclient
- Выберите по идентификатору группы или имени. ID группы идентифицирует группу пользователя, создавшего процесс.
Синтаксис: ps -G имя_группы ps --Группа имя_группы Пример : [root @ rhel7 ~] # ps -G root
- Просмотр по идентификатору группы:
Синтаксис: ps -g идентификатор_группы ps -group идентификатор_группы Пример : [root @ rhel7 ~] # ps -g 1 PID TTY TIME CMD 1? 00:00:13 systemd
- Просмотреть процесс по идентификатору процесса.
Синтаксис: ps p process_id ps -p идентификатор_процесса ps --pid process_id Пример : [root @ rhel7 ~] # ps p 27223 КОМАНДА ВРЕМЕНИ PID TTY STAT 27223? SS 0:01 sshd: root @ pts / 2 [root @ rhel7 ~] # ps -p 27223 PID TTY TIME CMD 27223? 00:00:01 sshd [root @ rhel7 ~] # ps --pid 27223 PID TTY TIME CMD 27223? 00:00:01 sshd
Вы можете просмотреть несколько процессов, указав несколько идентификаторов процессов, разделенных пробелом или запятой -
Пример :[root @ rhel7 ~] # ps -p 1 904 27223 КОМАНДА ВРЕМЕНИ PID TTY STAT 1? SS 0:13 / usr / lib / systemd / systemd --switched-root --system --d 904 tty1 Ssl + 1:02 / usr / bin / X -core -noreset: 0 -seat seat0 -auth / var / r 27223? SS 0:01 sshd: root @ pts / 2
Здесь мы упомянули три идентификатора процесса - 1, 904 и 27223, которые разделены пробелом.
- Выбрать по идентификатору родительского процесса. Используя эту команду, мы можем просмотреть все процессы, принадлежащие родительскому процессу, кроме родительского процесса.
[root @ rhel7 ~] # ps -p 766 PID TTY TIME CMD 766? 00:00:06 NetworkManager [root @ rhel7 ~] # ps --ppid 766 PID TTY TIME CMD 19805? 00:00:00 dhclient
В приведенном выше примере идентификатор процесса 766 назначен NetworkManager, и это родительский процесс для dhclient с идентификатором процесса 19805.
- Просмотр всех процессов принадлежит любому идентификатору сеанса.
Синтаксис: ps -s идентификатор_сеанса ps --sid session_id Пример : [root @ rhel7 ~] # ps -s 1248 PID TTY TIME CMD 1248? 00:00:00 dbus-демон 1276? 00:00:00 dconf-service 1302? 00:00:00 gvfsd 1310? 00:00:00 gvfsd-fuse 1369? 00:00:00 gvfs-udisks2-vo 1400? 00:00:00 gvfsd-trash 1418? 00:00:00 gvfs-mtp-volume 1432? 00:00:00 gvfs-gphoto2-vo 1437? 00:00:00 gvfs-afc-volume 1447? 00:00:00 wnck-апплет 1453? 00:00:00 уведомление-ar 1454? 00:00:02 часы-апплет
- Выбрать по tty. Это выбирает процессы, связанные с упомянутым tty:
Синтаксис: ps t tty ps -t tty пс --tty tty Пример : [root @ rhel7 ~] # ps -t pts / 0 PID TTY TIME CMD 31199 баллов / 0 00:00:00 баш 31275 баллов / 0 00:00:00 человек 31280 баллов / 0 00:00:00 меньше
- Выберите по эффективному идентификатору пользователя или имени.
Синтаксис:
ps U имя_пользователя / ID
ps -U имя_пользователя / ID
ps -u имя_пользователя / ID
ps –User user_name / ID
ps –user имя_пользователя / IDУправление форматом вывода
Эти параметры используются для выбора информации, отображаемой ps. Есть несколько вариантов управления форматом вывода. Эти параметры можно комбинировать с любыми другими параметрами, такими как e, u, p, G, g и т. Д., В зависимости от наших потребностей.
- Используйте -f для просмотра полноформатного списка.
[tux @ rhel7 ~] $ ps -af смокинг 17327 17326 0 12:42 баллов / 0 00:00:00 -баш смокинг 17918 17327 0 12:50 pts / 0 00:00:00 ps -af
- Используйте -F для просмотра дополнительного полного формата.
[tux @ rhel7 ~] $ ps -F UID PID PPID C SZ RSS PSR STIME TTY TIME CMD смокинг 17327 17326 0 28848 2040 0 12:42 баллов / 0 00:00:00 -баш смокинг 17942 17327 0 37766 1784 0 12:50 баллов / 0 00:00:00 пс -F
- Для просмотра процесса в соответствии с пользовательским форматом.
Синтаксис: [root @ rhel7 ~] # ps --formate имя_столбца [root @ rhel7 ~] # ps -o имя_столбца [root @ rhel7 ~] # ps o имя_столбца Пример : [root @ rhel7 ~] # ps -aN --format cmd, pid, user, ppid CMD PID ПОЛЬЗОВАТЕЛЬСКИЙ PPID / usr / lib / systemd / systemd - 1 корень 0 [kthreadd] 2 корень 0 [ksoftirqd / 0] 3 корень 2 [kworker / 0: 0H] 5 корень 2 [миграция / 0] 7 корень 2 [rcu_bh] 8 корень 2 [rcu_sched] 9 корень 2 [сторожевой таймер / 0] 10 корень 2
В этом примере я хочу увидеть команду, идентификатор процесса, имя пользователя и идентификатор родительского процесса, поэтому я передаю аргументы cmd, pid, user и ppid соответственно.
- Посмотреть в формате управления заданиями BSD:
[root @ rhel7 ~] # ps -j PID PGID SID TTY ВРЕМЯ CMD 16373 16373 16373 баллов / 0 00:00:00 bash 19734 19734 16373 баллов / 0 00:00:00 пс
- Отобразить длинный формат BSD:
[root @ rhel7 ~] # ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 904826 20 0 306560 51456 ep_pol Ssl + tty1 1:32 / usr / bin / X -core -noreset: 0 -seat seat0 -auth / var / run / lightdm / root /: 0 -noli 4 0 11692 11680 20 0 115524 2132 do_wai Ss пц / 2 0:00 -баш
- Добавьте столбец данных безопасности.
[root @ rhel7 ~] # ps -aM LABEL PID TTY TIME CMD Unlimited_u: unlimited_r: unlimited_t: s0-s0: c0.c1023 19534 очков / 2 00:00:00 человек неограниченный_у: неограниченный_r: неограниченный_t: s0-s0: c0.c1023 19543 баллов / 2 00:00:00 меньше неограниченный_у: неограниченный_r: неограниченный_t: s0-s0: c0.c1023 20469 баллов / 0 00:00:00 пс
- Просмотр команды с форматом сигнала.
[root @ rhel7 ~] # ps s 766
- Отображение ориентированного на пользователя формата
[root @ rhel7 ~] # ps u 1 USER PID% CPU% MEM VSZ RSS TTY STAT ВРЕМЯ НАЧАЛА КОМАНДА корень 1 0,0 0,6 128168 6844? СС апр 08 0:16 / usr / lib / systemd / systemd --switched-root --system --deserialize 21
- Отображение формата виртуальной памяти
[root @ rhel7 ~] # ps v 1 PID TTY STAT TIME MAJFL TRS DRS RSS% MEM COMMAND 1? Ss 0:16 62 1317 126850 6844 0,6 / usr / lib / systemd / systemd --switched-root --system --deserialize 21
- Если вы хотите увидеть окружение какой-либо команды. Тогда используйте опцию ** e ** -
[root @ rhel7 ~] # ps ev 766 PID TTY STAT TIME MAJFL TRS DRS RSS% MEM COMMAND 766? SSL 0:08 47 2441 545694 10448 1.0 / usr / sbin / NetworkManager --no-daemon LANG = en_US.UTF-8 ПУТЬ = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin
- Просматривайте процессы, использующие наибольший объем памяти.
ps -eo pid, ppid, cmd,% mem,% cpu --sort = -% mem
12 - распечатать дерево процессов
[корень @ rhel7 ~] # ps --forest -C sshd PID TTY TIME CMD 797? 00:00:00 sshd 11680? 00:00:03 _ sshd 16361? 00:00:02 _ sshd
- Перечислите все потоки для определенного процесса. Используйте параметр -T или -L для отображения потоков процесса.
[корень @ rhel7 ~] # ps -C sshd -L PID LWP TTY TIME CMD 797 797? 00:00:00 sshd 11680 11680? 00:00:03 sshd 16361 16361? 00:00:02 sshd
Примечание. Для объяснения различного содержания столбцов см. Справочную страницу.
Ссылка: страница руководства
- Используйте -f для просмотра полноформатного списка.