30 полезных примеров команды ‘ps’ для мониторинга процессов в Linux

ps (статус процессов) – это встроенная утилита Unix/Linux для просмотра информации о выборе запущенных процессов в системе: она считывает эту информацию из виртуальных файлов в файловой системе /proc. Это одна из важных утилит для администрирования системы, специально для мониторинга процессов, чтобы помочь вам понять, что происходит в системе Linux.

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

См. также: Все, что вам нужно знать о процессах в Linux [Подробное руководство]

В этой статье мы рассмотрим 30 полезных примеров команд ps для мониторинга активных процессов на системе Linux.

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

Перечислите все процессы в текущей оболочке

1. Если вы запустите команду ps без аргументов, она отобразит процессы текущей оболочки.

$ ps 
List Current Running Processes

Печать всех процессов в различных форматах

2. Отображение каждого активного процесса в системе Linux в общем (Unix/Linux) формате.

$ ps -A
OR
$ ps -e
List Processes in Standard Format

3. Показать все процессы в формате BSD.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4. Чтобы выполнить полное форматирование списка, добавьте флаг -f или -F.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

Показать процессы, запущенные пользователем

5. Вы можете выбрать все процессы, принадлежащие вам (запустившие команду ps, в данном случае root), введите:

$ ps -x 

6. Чтобы показать процессы пользователя по реальному идентификатору пользователя (RUID) или имени, используйте флаг -U.

$ ps -fU tecmint
OR
$ ps -fu 1000
List User Processes by ID

7. Чтобы выбрать процессы пользователя по эффективному идентификатору пользователя (EUID) или имени, используйте опцию -u.

$ ps -fu tecmint
OR
$ ps -fu 1000

Показать все процессы, запущенные как root (реальный и эффективный идентификатор)

8. Нижеприведенная команда позволяет просмотреть каждый процесс, запущенный с привилегиями пользователя root (реальный и эффективный идентификатор) в формате пользователя.

$ ps -U root -u root 
Display Root User Running Processes

Показать групповые процессы

9. Если вы хотите перечислить все процессы, принадлежащие определенной группе (реальный идентификатор группы (RGID) или имя), введите.

$ ps -fG apache
OR
$ ps -fG 48
Display Group Processes

10. Чтобы перечислить все процессы, принадлежащие эффективному имени группы (или сеансу), введите.

$ ps -fg apache

Показать процессы по PID и PPID

11. Вы можете перечислить процессы по PID следующим образом.

$ ps -fp 1178
List Processes by PID

12. Чтобы выбрать процесс по PPID, введите.

$ ps -f --ppid 1154
List Process by PPID

13. Сделайте выбор с использованием списка PID.

$ ps -fp 2226,1154,1146
List Processes by PIDs

Показать процессы по TTY

14. Чтобы выбрать процессы по tty, используйте флаг -t следующим образом.

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1
List Processes by TTY

Печать дерева процессов

15.Дерево процессов показывает, как процессы на системе связаны друг с другом; процессы, у которых были убиты родители, принимаются системой init (или systemd).

$ ps -e --forest 
List Process Tree

16.Вы также можете напечатать дерево процессов для данного процесса таким образом.

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 
List Tree View of Process

Печать потоков процессов

17.Для печати всех потоков процесса используйте флаг -L, это покажет столбцы LWP (легковесный процесс) а также NLWP (количество легковесных процессов).

$ ps -fL -C httpd
List Process Threads

Указание пользовательского формата вывода

Используя опции -o или –format, команда ps позволяет создавать пользовательские форматы вывода, как показано ниже.

18.Для перечисления всех форматных спецификаторов включите флаг L.

$ ps L

19.Следующая команда позволяет просмотреть PID, PPID, имя пользователя и команду процесса.

$ ps -eo pid,ppid,user,cmd
List Processes with Names

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

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
List Process ID Information

21.Чтобы найти имя процесса по его PID.

$ ps -p 1154 -o comm=
Find Process using PID

Отображение родительских и дочерних процессов

22.Для выбора конкретного процесса по его имени, используйте флаг -C, это также отобразит все его дочерние процессы.

$ ps -C sshd
Find Parent-Child Process

23. Найдите все PID всех экземпляров процесса, полезно при написании скриптов, которые должны читать PID из стандартного вывода или файла.

$ ps -C httpd -o pid=
Find All Process PIDs

24. Проверьте время выполнения процесса.

$ ps -eo comm,etime,user | grep httpd

Ниже показано, что служба HTTPD работает 1 час, 48 минут и 17 секунд.

Find Process Uptime

Устранение проблем с производительностью системы Linux

Если ваша система не работает должным образом, например, если она необычно медленная, вы можете выполнить некоторые действия по устранению неполадок в системе следующим образом.

26. Найдите самые загруженные процессы по использованию памяти и процессора в Linux.

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
Find Top Running Processes

27. Чтобы завершить процессы Linux/нереагирующие приложения или любой процесс, потребляющий много времени процессора.

Сначала найдите PID нереагирующего процесса или приложения.

$ ps -A | grep -i stress

Затем используйте команду kill, чтобы немедленно завершить его.

$ kill -9 2583 2584
Find and Kill a Process

Печать информации о безопасности

28. Показать контекст безопасности (в частности для SELinux) таким образом.

$ ps -eM
OR
$ ps --context
Find SELinux Context

29. Вы также можете отображать информацию о безопасности в формате, определенном пользователем, с помощью этой команды.

$ ps -eo  euser,ruser,suser,fuser,f,comm,label
List SELinux Context by Users

Выполнение мониторинга процессов в реальном времени с использованием утилиты Watch

30. Наконец, поскольку ps отображает статическую информацию, вы можете использовать утилиту watch для выполнения мониторинга процессов в реальном времени с повторяющимся выводом, отображаемым каждую секунду, как в команде ниже (указывайте пользовательскую команду ps для достижения вашей цели).

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Real-Time Process Monitoring

Важно: ps показывает только статическую информацию, для просмотра часто обновляемого вывода вы можете использовать инструменты, такие как htop; top и glances: последние два, на самом деле, являются инструментами мониторинга производительности системы Linux.

Вам также может понравиться прочитать следующие связанные статьи.

  1. Как найти имя процесса по номеру PID в Linux
  2. Найти Топ Запущенных Процессов по Высшему Использованию Памяти и ЦП в Linux
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. Как Найти и Завершить Запущенные Процессы в Linux
  5. Как Запустить Команду Linux в Фоновом Режиме и Отсоединить Процесс в Терминале

Вот и все на данный момент. Если у вас есть какие-либо полезные примеры команды ps для обмена (не забывайте объяснить, что она делает), используйте форму комментариев ниже.

Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/