opened image

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

 

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

 

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

 

Скрипты команды ps

 

16. Сортировка процессов по использованию CPU

Команда:

ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu

Опция --sort=-%cpu сортирует вывод в порядке убывания по колонке %cpu. Это помогает быстро определить процессы, нагружающие процессор.


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

  PID USER     %CPU %MEM CMD
 3456 bob      35.0  1.5 /usr/bin/java -jar server.jar
 2345 alice    10.0  2.5 /usr/bin/python app.py
 1234 root      0.5  1.2 /usr/sbin/sshd -D

 

17. Сортировка процессов по использованию памяти

Команда:

ps -eo pid,user,%cpu,%mem,cmd --sort=-%mem

Опция --sort=-%mem сортирует процессы по потреблению памяти.


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

  PID USER     %CPU %MEM CMD
 4567 charlie   5.0 15.0 /usr/bin/python data_analysis.py
 3456 bob      35.0  5.5 /usr/bin/java -jar server.jar
 2345 alice    10.0  2.5 /usr/bin/python app.py

 

18. Отображение времени работы процесса

Команда:

ps -p 1234 -o etime

Спецификатор etime показывает время, прошедшее с момента запуска процесса.


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

    ELAPSED
    02:15:30

 

19. Отображение точного времени запуска процесса

Команда:

ps -p 1234 -o lstart

Спецификатор lstart отображает дату и время запуска процесса.


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

              STARTED
Mon Sep 13 10:00:00 2021

 

20. Отображение приоритета процесса

Команда:

ps -p 1234 -o pid,ni,cmd

ni: значение "niceness" процесса, определяющее его приоритет. Диапазон от -20 (наивысший приоритет) до 19 (наименьший).


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

  PID  NI CMD
 1234   0 /usr/sbin/sshd -D

 

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

Команда:

ps -eo pid,ppid,cmd

Это помогает понять, какие процессы были запущены другими процессами.


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

  PID  PPID CMD
    1     0 /sbin/init
 1234     1 /usr/sbin/sshd -D
 2345  1234 sshd: user@pts/0

 

22. Вывод процессов без заголовков

Команда:

ps -eo pid,cmd --no-headers

Опция --no-headers убирает строку заголовка, что полезно при использовании вывода в скриптах.


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

 1234 /usr/sbin/sshd -D
 2345 sshd: user@pts/0

 

23. Отображение контекста безопасности (SELinux)

Команда:

ps -eZ

Опция -Z выводит контекст безопасности каждого процесса. Это важно в системах с активированным SELinux для управления политиками безопасности.


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

LABEL                             PID TTY          TIME CMD
system_u:system_r:init_t:s0         1 ?        00:00:05 /sbin/init
system_u:system_r:sshd_t:s0      1234 ?        00:00:00 /usr/sbin/sshd -D

 

24. Фильтрация процессов по терминалу (TTY)

Команда:

ps -t pts/0

Опция -t фильтрует процессы, связанные с указанным терминалом.


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

  PID TTY      STAT   TIME CMD
 3456 pts/0    Ss     0:00 -
 4567 pts/0    R+     0:00 ps -t pts/0

 

25. Исключение определенных процессов из вывода

Команда:

ps -e --exclude 1234

Опция --exclude позволяет исключить из вывода процессы с указанным PID.

 

26. Отображение процессов в реальном времени с использованием watch

Команда:

watch -n 5 'ps aux --sort=-%mem | head'

Команда watch перезапускает указанную команду каждые n секунд (в данном случае каждые 5 секунд), позволяя мониторить изменения в реальном времени.

 

27. Комбинирование ps с awk для расширенной обработки

Команда:

ps -eo pid,cmd,%mem --sort=-%mem | awk '$3 > 1.0 {print $0}'

Это отображает процессы, потребляющие более 1% памяти. awk фильтрует строки, где значение в третьем столбце (%mem) больше 1.0.

 

28. Поиск процессов с использованием регулярных выражений

Команда:

ps -ef | grep -E 'ssh|nginx'

Опция -E указывает grep использовать расширенные регулярные выражения. Это отобразит процессы, связанные с ssh или nginx.

 

29. Отображение количества потоков процессов

Команда:

ps -eo pid,cmd,nlwp

nlwp: показывает количество легковесных процессов (потоков) для каждого процесса.


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

  PID CMD                          NLWP
 1234 /usr/sbin/sshd -D               1
 3456 /usr/bin/java -jar app.jar     25

 

30. Завершение процесса по его имени

Команда для получения PID процесса:

ps -C processname -o pid=

Опция -C ищет процессы по имени команды, -o pid= выводит только PID без заголовка.


Пример:

ps -C firefox -o pid=

Команда для завершения процесса:

kill PID

Замените PID на идентификатор процесса, полученный на предыдущем шаге. Для принудительного завершения используйте kill -9 PID.

 

Заключение

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

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

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