opened image

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

 

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

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

 

 

Как использовать команду ps?

 

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. Мы научились фильтровать процессы по различным критериям, отображать детальную информацию, использовать пользовательские форматы вывода и визуализировать иерархию процессов. Эти знания являются фундаментальными для эффективного мониторинга и управления системой.

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

Также предлагаем рассмотреть другие полезные статьи: