оригинал статьи: https://blog.sedicomm.com/2018/05/28/30-poleznyh-komand-ps-dlya-monitoringa-protsessov-linux/
Команды ps (process state — состояние процессов) — это родная утилита Unix/Linux для просмотра информации о работе запущенных процессов в системе: она считывает эту информацию из виртуальных файлов в файловой системе /proc. Это одна из важных утилит для системного администрирования специально созданная для того, чтобы помочь вам понять, что происходит в системе Linux.
В этой статье мы рассмотрим 30 полезных примеров команды ps для мониторинга активных запущенных процессов в системе Linux.
Обратите внимание, что ps производит вывод с помощью строки заголовка, которая описывает смысл каждого столбца информации, вы можете найти значение всех меток на странице man ps.
1. Если вы запускаете команду ps без каких-либо аргументов, она отображает процессы для текущей оболочки.
$ ps
2. Отображение каждого активного процесса в системе Linux в общем формате (Unix/Linux).
$ ps -A
ИЛИ
$ ps -e
3. Отобразим все процессы в формате BSD.
$ ps au
ИЛИ
$ ps axu[/bash]
4. Чтобы выполнить полноформатный листинг, добавьте флаг -f или -F.
$ ps -ef
ИЛИ
$ ps -eF
5. Вы можете выбрать все процессы, принадлежащие вам, введите:
$ ps -x
6. Чтобы отобразить процессы пользователя с помощью реального идентификатора пользователя (RUID) или его имени, используйте флаг -U.
$ ps -fU yurii
ИЛИ
$ ps -fU 1000
7. Чтобы выбрать процессы пользователя с помощью эффективного идентификатора пользователя (EUID) или его имени, используйте параметр -u.
$ ps -fu sedicomm
ИЛИ
$ ps -fu 1000
8. Приведенная ниже команда позволяет просматривать каждый процесс, выполняющийся с правами пользователя root (реальный и эффективный идентификатор) в пользовательском формате.
$ ps -U root -u root
9. Если вы хотите вывести все процессы, принадлежащие определенной группе (идентификатор реальной группы (RGID или её имя), введите:
$ ps -fG adm
ИЛИ
$ ps -fG 48
10. Чтобы вывести все процессы, принадлежащие эффективному имени группы (или сеанса), введите:
$ ps -fg adm
11. Вы можете перечислить процессы с помощью PID следующим образом.
$ ps -fp 941
12. Чтобы выбрать процессы с помощью PPID, введите:
$ ps -f --ppid 941
13. Отсортировать, используя список PID.
$ ps -fp 941,6618,4605
14. Чтобы выбрать процессы с помощью tty, используйте флаг -t следующим образом.
$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty2
15. Дерево процессов показывает, как процессы в системе связаны друг с другом; процессы, родительские процессы которых были завершены, принимаются init (или systemd).
$ ps -e --forest
16. Вы также можете вывести дерево процессов для данного процесса, подобного этому:
$ ps -f --forest -C gdm3
ИЛИ
$ ps -ef --forest | grep -v grep | grep gdm3
17. Чтобы вывести все потоки процесса, используйте флаг -H, это покажет LWP (легковесный процесс), а также столбцы NLWP (количество легковесных процессов).
$ ps -fL -C sshd
Используя опции -o или -format, ps позволяет создавать пользовательские форматы вывода, как показано ниже.
18. Чтобы перечислить все спецификаторы формата, пропишите флаг L.
$ ps L
19. Приведенная ниже команда позволяет вам просматривать PID, PPID, имя пользователя и команду процесса.
$ ps -eo pid,ppid,user,cmd
20. Ниже приведен еще один пример пользовательского формата вывода, показывающего группу файловой системы, приоритет nice, время начала и текущее время выполнения процесса.
$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
21. Чтобы найти имя процесса, используя его PID.
$ ps -p 1334 -o comm=
22. Чтобы выбрать конкретный процесс по его имени, используйте флаг -C, это также отобразит все его дочерние процессы.
$ ps -C systemd
23. Найдите PID всех экземпляров процесса, которые полезны при написании скриптов, которые должны считывать PID из выходного файла std.
$ ps -C httpd -o pid=
24. Проверьте время выполнения процесса.
$ ps -eo comm,etime,user | grep httpd
На приведенном ниже рисунке показано, что служба HTTPD работает в течение 13 минут и 59 секунд.
Если ваша система работает не так, как должна, например, если она необычно медлительна, вы можете найти некоторые неполадки в системе следующим образом:
26. Найдите процессы, использующие максимальное количество памяти/ЦП в Linux.
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
ИЛИ
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
27. Чтобы завершить Linux-процессы / неуправляемые приложения, которые потребляют много ресурсов процессора/памяти, выполните следующую команду:
Во-первых, найдите PID соответствующего процесса или приложения.
$ ps -A | grep -i sshd
Затем используйте команду kill, чтобы немедленно завершить его.
$ kill -9 873 1345
28. Выведите контекст безопасности (в частности, для SELinux):
$ ps -eM
ИЛИ
$ ps --context
29. Вы также можете отобразить информацию о безопасности в пользовательском формате с помощью этой команды:
$ ps -eo euser,ruser,suser,fuser,f,comm,label
30. Наконец, поскольку ps отображает статическую информацию, вы можете использовать утилиту watch для выполнения мониторинга процессов в реальном времени с выводом данных, отображаемым через каждую секунду, как в приведенной ниже команде.
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Важно: ps показывает только статическую информацию, для просмотра часто обновляемого вывода вы можете использовать такие инструменты, как htop; top и glances: последние два — это инструмент мониторинга производительности системы Linux.