ВОЙТИ
    opened image

    Команда ps в действии: 30 примеров для продвинутого мониторинга Linux (Часть 1)

    ​​​​​​​

     

    Команда ps (от англ. process status) — это утилита в Linux, которая отображает информацию о текущих запущенных процессах в системе. Она считывает данные из файловой системы /proc и предоставляет моментальный снимок состояния процессов. Для системных администраторов понимание и умение эффективно использовать команду ps является ключевым навыком для мониторинга и управления системой.

    В этой статье мы рассмотрим 30 примеров использования команды ps, снабдив каждый детальным описанием действий команды, объяснением используемых опций и практическими примерами. Это поможет глубже понять, как работают процессы в Linux, и как можно контролировать и оптимизировать их работу.

     

    1. Отображение процессов текущей сессии


    Команда:

     

    ps


    Данная команда без аргументов показывает процессы, связанные с вашей текущей сессией терминала. Вывод включает процессы, запущенные в текущем терминале, и отображает столбцы:

    • PID: идентификатор процесса.
    • TTY: терминал, к которому привязан процесс.
    • TIME: суммарное время процессорного времени, потребленного процессом.
    • CMD: команда, запустившая процесс.


    Пример вывода:

     

    ​​​​​​​

     


    2. Вывод всех активных процессов в системе
     

    Команда:

    ps -e
    # или
    ps -A


    Опции -e или -A выводят информацию обо всех процессах, запущенных в системе, независимо от того, каким пользователем или в каком терминале они были запущены.

     

    Пример вывода:

     

     

     

    3. Подробный вывод всех процессов

    Команда:

    ps -ef
    

    Опция -f (full-format) расширяет вывод, добавляя дополнительную информацию:

    • UID: пользователь, запустивший процесс.
    • PPID: идентификатор родительского процесса.
    • C: использование процессора.
    • STIME: время запуска процесса.
    • TTY, TIME, CMD: как и ранее.


    Пример вывода:

    UID       PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 10:00 ?        00:00:05 /sbin/init
    root         2     0  0 10:00 ?        00:00:00 [kthreadd]
    root         3     2  0 10:00 ?        00:00:00 [rcu_gp]
    

     

    4. Отображение процессов в формате BSD

    Команда:

    ps aux
    

    Комбинация опций:

    • a: отображает процессы всех пользователей.
    • u: выводит информацию в удобочитаемом формате с указанием пользователя и использования ресурсов.
    • x: включает процессы, не привязанные к терминалу (например, демоны).


    Пример вывода:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1 167244  6208 ?        Ss   10:00   0:05 /sbin/init
    root         2  0.0  0.0      0     0 ?        S    10:00   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        I<   10:00   0:00 [rcu_gp]
    

     

     

    5. Фильтрация процессов по имени пользователя

    Команда:

    ps -u username
    

    Опция -u позволяет отобразить процессы, запущенные конкретным пользователем. Замените username на имя пользователя, чьи процессы вы хотите увидеть.


    Пример:

    ps -u alice
    


    Пример вывода:

      PID TTY          TIME CMD
     4567 pts/1    00:00:00 bash
     5678 pts/1    00:00:01 python
     6789 pts/1    00:00:00 ps
    

     

     

    6. Фильтрация процессов по UID

    Команда:

    ps -u 1000
    

    Если вы знаете UID пользователя (например, 1000), можно использовать его вместо имени. Это полезно в скриптах или системах, где важно использовать числовые идентификаторы.

     

    7. Отображение процессов без контролирующего терминала

    Команда:

    ps -x
    

    Опция x выводит процессы, не связанные с терминалом. Такие процессы обычно являются фоновыми службами или демонами.


    Пример вывода:

      PID TTY      STAT   TIME COMMAND
      567 ?        Ss     0:00 /usr/sbin/cron
      678 ?        Ss     0:02 /usr/bin/dbus-daemon --system
      789 ?        Ssl    0:05 /usr/lib/policykit-1/polkitd
    

     

     

    8. Комбинированное использование опций для расширенного вывода

    Команда:

    ps aux
    

    Объединяя опции a, u и x, мы получаем полный список всех процессов всех пользователей в удобочитаемом формате, включая фоновые процессы.

     

    9. Фильтрация процессов по имени команды

    Команда:

    ps -C sshd
    

    Опция -C позволяет отобразить процессы, запущенные определенной командой. В данном случае выводятся все процессы sshd.


    Пример вывода:

      PID TTY      STAT   TIME COMMAND
     1234 ?        Ss     0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
     2345 ?        S      0:00 sshd: user@pts/0
    

     

     

    10. Использование grep для поиска процессов

    Команда:

    ps -ef | grep nginx
    

    Это позволяет найти все процессы, связанные с nginx. Чтобы избежать вывода самого процесса grep:

    ps -ef | grep '[n]ginx'
    

     

     

    Скобки создают регулярное выражение, которое соответствует nginx, но не grep nginx.

     

    В первых 15 примерах использования команды ps мы рассмотрели базовые и продвинутые техники отображения информации о процессах в Linux. Мы научились фильтровать процессы по различным критериям, отображать детальную информацию, использовать пользовательские форматы вывода и визуализировать иерархию процессов. Эти знания являются фундаментальными для эффективного мониторинга и управления системой.

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