Обложка канала

Лига сисадминов

Здесь мы собираем всё, что может быть интересно представителям, пожалуй, лучшей в мире профессии: руководства, лучшие практики, свежие новости мира ИТ, книги, и многое другое.

Лига сисадминов

4 года назад
Открыть в
Одна из наиболее часто используемых команд консоли Linux - ps (processes status). Это небольшая утилита для просмотра информации о запущенных процессах. У неё огромное количество ключей для представления информации. Если её запустить без них, то она покажет только список процессов данного терминала. Их может вообще не быть, кроме самой оболочки, в которой она запущена. Сразу покажу команду, которая используется в большинстве случаев: # ps ax Выводит все процессы без привязки к пользователю и терминалу. Этот вывод чаще всего приходится грепать, чтобы посмотреть информацию по конкретному процессу. Например, поменял конфигурацию php-fpm на запуск определённого количества процессов, перезапустил демон и проверил, что процессов столько, сколько надо: # ps ax | grep php-fpm Можно сразу же пересчитать их количество для какого-то конкретного пула, если меняли только его настройки: # ps ax | grep php-fpm | grep www | wc -l Тут конечно можно и одним грепом обойтись, но если хочется сделать так, и это можно (unix-way), то почему бы собственно и нет. Либо можно использовать такой вариант: # ps -F -C php-fpm Если добавить ключ u, то можно посмотреть инфу об использовании ресурсов системы каждым процессом: # ps axu Полезно добавить к выводу ps ключ --forest, чтобы получить иерархический список процессов. Если просматриваете его весь, то будет нагляднее для анализа: # ps ax --forest Если вывод ps слишком длинный, вместо того, чтобы потом скролить терминал, можно добавлять less # ps ax --forest | less Less полезно использовать, чтобы увидеть полные строки процессов с параметрами, так как при таком просмотре выполняется перенос строк. Чтобы строки не обрезались, надо дважды добавить ключ -w # ps ax -w -w Теперь немного инфы из закладок. Не запоминал эти конструкции. Вывод списка процессов с отображением информации о потребляемых CPU и MEM с сортировкой по первому: # ps -e -o pcpu,pmem,args --sort -pcpu Иногда бывает полезно этот список сверху обрезать: # ps -e -o pcpu,pmem,args --sort -pcpu | head -10 Список самых тяжёлых процессов по памяти с выводом информации о pid и user этого процесса. Ну и заодно столбцы с mem и cpu переносим вправо, чтобы удобнее смотреть было: # ps -eo pid,user,cmd,%mem,%cpu --sort=-%mem | head -10 Если к командам выше добавить watch, то эту информацию можно смотреть в режиме реального времени: # watch -n 1 'ps -eo pid,user,cmd,%mem,%cpu --sort=-%mem | head -10' Ну и в завершении скрипт, который соберёт информацию обо всех процессах, в том числе с повторяющимися именами, просуммирует их потребление и выведет общий список: # ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END \ { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' \ | sort -n | tail -n 10 | sort -rn \ | awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}' #ит_заметки #linux #администрирование #ps