Команда ps в Linux с примерами

Опубликовано: 16 Февраля, 2022

Как мы все знаем, Linux - это многозадачная и многопользовательская система. Таким образом, это позволяет нескольким процессам работать одновременно, не мешая друг другу. Процесс - одна из важных фундаментальных концепций ОС Linux. Процесс - это исполняемый экземпляр программы, выполняющий различные задачи в операционной системе.

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

ps предоставляет множество возможностей для управления выводом в соответствии с нашими потребностями.

Синтаксис -

 ps [параметры]

Параметры для команды ps:

  1. Простой выбор процесса: показывает процессы для текущей оболочки -
    [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 до сих пор не использует процессорное время.

  2. Просмотр процессов: просмотр всех запущенных процессов, используя любую из следующих опций с ps -
    [root @ rhel7 ~] # ps -A
    [root @ rhel7 ~] # ps -e
    
  3. Просмотр процессов, не связанных с терминалом: просмотр всех процессов, кроме как лидеров сеанса, так и процессов, не связанных с терминалом.
    [root @ rhel7 ~] # ps -a
      PID TTY TIME CMD
    27011 баллов / 0 00:00:00 человек
    27016 балл / 0 00:00:00 меньше
    27499 баллов / 1 00:00:00 пс
    

    Примечание. Вы можете подумать, что такое лидер сеанса? Каждой группе процессов предстоит уникальная сессия. Итак, лидер сеанса - это процесс, который запускает другие процессы. Идентификатор первого процесса любого сеанса аналогичен идентификатору сеанса.

  4. Просмотреть все процессы, кроме лидеров сеанса:
    [root @ rhel7 ~] # ps -d
    
  5. Просмотреть все процессы, кроме тех, которые удовлетворяют указанным условиям (отменяет выбор):
    Пример - если вы хотите видеть только лидера сеанса и процессы, не связанные с терминалом. Затем запустите
    [корень @ rhel7 ~] # ps -a -N
    ИЛИ
    [root @ rhel7 ~] # ps -a --deselect
    
  6. Просмотрите все процессы, связанные с этим терминалом:
    [root @ rhel7 ~] # ps -T
    
  7. Посмотреть все запущенные процессы:
    [root @ rhel7 ~] # ps -r
    
  8. Просмотреть все процессы, принадлежащие вам: Процессы, то есть тот же EUID, что и ps, что означает запуск команды ps, в данном случае root -
    [root @ rhel7 ~] # ps -x
    

Выбор процесса по списку

Здесь мы обсудим, как получить список конкретных процессов с помощью команды ps. Эти параметры принимают один аргумент в виде списка, разделенного пробелами или запятыми. Их можно использовать несколько раз.
Например: ps -p «1 2» -p 3,4.

  1. Выберите процесс по имени команды. Это выбирает процессы, имя исполняемого файла которых указано в cmdlist. Возможно, вы не знаете идентификатор процесса, и с помощью этой команды будет проще выполнять поиск.
    Синтаксис: ps -C имя_команды
    Синтаксис:
    ps -C имя_команды
    
    Пример :
    [root @ rhel7 ~] # ps -C dhclient
      PID TTY TIME CMD
    19805? 00:00:00 dhclient
    
  2. Выберите по идентификатору группы или имени. ID группы идентифицирует группу пользователя, создавшего процесс.
    Синтаксис:
    ps -G имя_группы
    ps --Группа имя_группы
    
    Пример :
    [root @ rhel7 ~] # ps -G root
    
  3. Просмотр по идентификатору группы:
    Синтаксис:
    ps -g идентификатор_группы
    ps -group идентификатор_группы
    
    Пример :
    [root @ rhel7 ~] # ps -g 1
      PID TTY TIME CMD
        1? 00:00:13 systemd
    
  4. Просмотреть процесс по идентификатору процесса.
    Синтаксис:
    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, которые разделены пробелом.

  5. Выбрать по идентификатору родительского процесса. Используя эту команду, мы можем просмотреть все процессы, принадлежащие родительскому процессу, кроме родительского процесса.
    [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.

  6. Просмотр всех процессов принадлежит любому идентификатору сеанса.
    Синтаксис:
    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 часы-апплет
    
  7. Выбрать по 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 меньше
    
  8. Выберите по эффективному идентификатору пользователя или имени.
    Синтаксис:
    ps U имя_пользователя / ID
    ps -U имя_пользователя / ID
    ps -u имя_пользователя / ID
    ps –User user_name / ID
    ps –user имя_пользователя / ID

    Управление форматом вывода

    Эти параметры используются для выбора информации, отображаемой ps. Есть несколько вариантов управления форматом вывода. Эти параметры можно комбинировать с любыми другими параметрами, такими как e, u, p, G, g и т. Д., В зависимости от наших потребностей.

    1. Используйте -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
      
    2. Используйте -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
      
    3. Для просмотра процесса в соответствии с пользовательским форматом.
       Синтаксис:
      [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 соответственно.

    4. Посмотреть в формате управления заданиями 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 пс
      
    5. Отобразить длинный формат 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 -баш
      
    6. Добавьте столбец данных безопасности.
      [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 пс
      
    7. Просмотр команды с форматом сигнала.
      [root @ rhel7 ~] # ps s 766
      
    8. Отображение ориентированного на пользователя формата
      [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
      
    9. Отображение формата виртуальной памяти
      [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
      
    10. Если вы хотите увидеть окружение какой-либо команды. Тогда используйте опцию ** 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
      
    11. Просматривайте процессы, использующие наибольший объем памяти.
      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
      
    12. Перечислите все потоки для определенного процесса. Используйте параметр -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
      

      Примечание. Для объяснения различного содержания столбцов см. Справочную страницу.

    Ссылка: страница руководства