Использование ps для мониторинга процессов

Утилита ps выводит статистику и информацию о состоянии процессов в системе, в том числе ID процесса или нити, объем выполняемого ввода-вывода и используемый объем ресурсов ЦП и памяти. ps поддерживает опции в стиле трех разных типов UNIX. Опции в стиле Unix98 состоят из одного или нескольких символов, перед которым(и) должен стоять дефис. Опции в стиле BSD имеют аналогичный вид, только используются без дефиса. Опции, характерные только для GNU-версии представляют собой слово, перед которым должно стоять два дефиса. Их нельзя объединять, как однобуквенные опции двух предшествующих типов. Таким образом, существует три равноправных формата задания этой команды (при этом опции разных типов нельзя употреблять в одной команде):

ps [-опции]
ps [опции]
ps [-- длинное_имя_опции [-- длинное_имя_опции] ...]

Рассмотрим информацию выводимую ps на примере процесса демона radiusd.

# ps aux | grep radiusd
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     16797  1.2  7.7 2277272 1277644 ?     Ssl  Feb15  37:21 /usr/local/radiusd

# ps -ef | grep radiusd
UID        PID  PPID  C STIME TTY          TIME CMD
root     16797     1  1 Feb15 ?        00:37:22 /usr/local/radiusd

# ps v 16797
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
16797 ?        Ssl   38:29      2  2069 2275202 1280524  7.7 /usr/local/radiusd

Описание выводимых столбцов.

  • С. Показатель использования ЦПУ (central processing unit, CPU) процессом (в тактах; в первом приближении тактовая частота характеризует производительность подсистемы (процессора, памяти и пр.), то есть количество выполняемых операций в секунду).
  • TIME. Общее процессорное время, затраченное на выполнение процесса (в единицах времени).
  • %CPU. Этот параметр отражает зависимость программы от процессора. Значение %CPU указывает, какой процент процессорного времени был потрачен на выполнение процесса с момента его запуска. Это значение подсчитывается по следующей формуле: (время ЦП, затраченное на выполнение процесса / время выполнения процесса) * 100, в системе SMP это значение делится на число ЦП, работающих в системе.
  • STIME. Время старта процесса.
  • RSS. Объем физической памяти, занятой процессом, в килобайтах. Это значение равно числу страниц из рабочего сегмента памяти и из сегмента кода программы, находящихся в оперативной памяти, умноженному на 4. Не забывайте, что сегмент кода программы применяется всеми запущенными экземплярами программы. Если запущено 26 процессов ksh, в оперативной памяти будет находиться только одна копия страниц с исполняемым кодом ksh, однако в выводе команды ps размер этих страниц будет прибавлен к значению RSS всех экземпляров программы ksh.
  • TRS. Размер резидентной (размещенной в физической памяти) командной части программы. Это значение равно числу страниц с кодом программы, умноженному на 4. Это значение искажает фактический объем памяти, занятый программой, если запущено несколько экземпляров программы.
  • %MEM Это значение указывает, какую долю (в процентах) от общего объема оперативной памяти компьютера составляет значение RSS. Оно характеризует долю физической памяти, занятой процессом. К сожалению, как и RSS, эта величина переоценивает загрузку памяти процессами, которые совместно используют командную часть программы. Кроме того, округление до ближайшего целого значения приводит к тому, что значение %MEM будет равно 0,0, если отношение RSS к объему оперативной памяти меньше 0,005.

Примеры использования: команда ps aux

  • Полный список команд ps можно увидеть (например для использования с ключом -o)
    # ps L
    %cpu         %CPU    
    %mem         %MEM
    cpuid        CPUID   
    cputime      TIME 
  • Вывести 10 процессов, занимающих больше всего ЦП
    # ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
    # ps -eo pcpu,pid,user,args | sort -r -k1 | less
    # ps -auxf | sort -nr -k 3 | head -10
  • Выдать информацию о параметрах безопасности
    # ps -eo euser,ruser,suser,fuser,f,comm,label
    # ps axZ
    # ps -eM
  • Выдать 10 процессов, потребляющих наибольшее количество памяти
    # ps -auxf | sort -nr -k 4 | head -10
  • Вывести информацию (объем используемой ОЗУ) о процессе по его PID
    # ps -fp 28964
    UID        PID  PPID  C STIME TTY          TIME CMD
    apache   28964 13246  0 Feb15 ?        00:01:14 /usr/sbin/httpd

Читайте также: Как находить и удалять zombie процессы в Linux

PQ VPS сервера в 28+ странах.