12.1.1. Получение информации о процессе: /proc/PID

Для каждого процесса в системе ядро предоставляет соответствующий каталог по имени /proc/PID, где PID является идентификатором процесса. Внутри этого каталога находятся различные файлы и подкаталоги, содержащие информацию о процессе. Например, просмотрев файлы в каталоге /proc/1, можно получить информацию о процессе init, идентификатор которого всегда имеет значение 1.

Среди файлов в каждом каталоге /proc/PID есть файл по имени status, предоставляющий множество данных о процессе:

$ cat /proc/1/status

Name: init Имя исполняемого файла

State: S (sleeping) Состояние процесса

Tgid: 1 ID группы потоков (обычный PID, getpid())

Pid: 1 Фактически ID потока (gettid())

PPid: 0 ID родительского процесса

TracerPid: 0 PID отслеживающего процесса

(0, если не отслеживается)

Uid: 0 0 0 0 Набор UID: реальный, действующий,

сохраненный и файловой системы

Gid: 0 0 0 0 Набор GID: реальный, действующий,

сохраненный и файловой системы

FDSize: 256 Текущее количество выделенных дескрипторов файлов

Groups: Дополнительные групповые идентификаторы

VmPeak: 852 kB Пиковое значение размера виртуальной памяти

VmSize: 724 kB Текущее значение виртуальной памяти

VmLck: 0 kB Заблокированная память

VmHWM: 288 kB Пиковый размер резидентного набора

VmRSS: 288 kB Текущий размер резидентного набора

VmData: 148 kB Размер сегмента данных

VmStk: 88 kB Размер стека

VmExe: 484 kB Размер текстового сегмента (исполняемого кода)

VmLib: 0 kB Размер кода совместно используемой библиотеки

VmPTE: 12 kB Размер таблицы страниц (начиная с версии 2.6.10)

Threads: 1 Количество потоков в данной группе потоков

SigQ: 0/3067 Текущее/максимальное количество сигналов

в очереди (начиная с версии 2.6.12)

SigPnd: 0000000000000000 Маска сигналов, ожидающих по потокам

ShdPnd: 0000000000000000 Маска сигналов, ожидающих процесса

(начиная с версии 2.6)

SigBlk: 0000000000000000 Маска заблокированных сигналов

SigIgn: fffffffe5770d8fc Маска игнорируемых сигналов

SigCgt: 00000000280b2603 Маска перехватываемых сигналов

CapInh: 0000000000000000 Маска наследуемых мандатов

CapPrm: 00000000ffffffff Маска разрешенных мандатов

apEff: 00000000fffffeff Маска действующих мандатов

CapBnd: 00000000ffffffff Маска множества, ограничивающего мандаты

(начиная с версии 2.6.26)

Cpus_allowed: 1 Маска разрешенных центральных процессоров

(начиная с версии 2.6.24)

Cpus_allowed_list: 0 То же, что и выше, но в виде списка

(начиная с версии 2.6.26)

Mems_allowed: 1 Маска разрешенных узлов памяти

(начиная с версии 2.6.24)

Mems_allowed_list: 0 То же, что и выше, но в виде списка

(начиная с версии 2.6.26)

voluntary_ctxt_switches: 6998 Преднамеренные переключения контекста

(начиная с версии 2.6.23)

nonvoluntary_ctxt_switches: 107 Вынужденные переключения контекста

(начиная с версии 2.6.23)

Stack usage: 8 kB Метка наивысшего уровня использования стека

(начиная с версии 2.6.32)

Эта информация была получена с использованием ядра версии 2.6.32. Из сопроводительных комментариев с метками «начиная с версии» видно, что формат со временем изменялся и к нему в различных версиях ядра добавлялись новые поля (а иногда поля и удалялись). (Кроме отмеченных выше изменений, привнесенных Linux 2.6, в Linux 2.4 были добавлены поля Tgid, TracerPid, FDSize и Threads.)

Перейти на страницу:

Похожие книги