Продолжая наше глубокое погружение в возможности команды ps, во второй части мы рассмотрим еще 15 примеров, которые помогут вам освоить более продвинутые техники мониторинга и управления процессами в Linux. Здесь мы сфокусируемся на оптимизации использования ресурсов, безопасности, интеграции с другими утилитами и автоматизации задач.
Вы узнаете, как сортировать процессы по различным метрикам, фильтровать их по более сложным критериям, использовать команду 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 и повысить уровень профессионализма в управлении системой. Не бойтесь экспериментировать и расширять свои знания, ведь умение эффективно использовать инструменты командной строки — ключевой навык успешного системного администратора.