/proc/[PID]
/proc — виртуальная ФС типа proc, генерируемая ядром. Каждому процессу соответствует каталог /proc/[PID], содержимое создаётся on-demand. Полный справочник полей — proc(5).
Базовые файлы
- cmdline — argv, разделённые
\0. - exe — symlink на исполняемый файл.
- cwd — symlink на текущий рабочий каталог.
- root — symlink на корневой каталог процесса (отличается после
chroot(2)). - environ — окружение, разделённое
\0. - fd/ — symlink'и на открытые файловые дескрипторы (
0— stdin,1— stdout,2— stderr). - fdinfo/ — для каждого fd:
pos,flags,mnt_id, тип объекта. - maps — карта виртуальной памяти (адрес, права, offset, dev, inode, путь).
- smaps — детализация по VMA: RSS, PSS, Shared/Private clean/dirty.
- smaps_rollup — агрегированные значения по всему процессу.
- mem — содержимое адресного пространства (требует
ptrace). - stat — однострочная сводка (PID, comm, state, PPID, PGID, ...; формат в
proc(5)). - status — то же в человекочитаемом виде с метками:
Name,State,Pid,PPid,Uid,Gid,VmRSS,Threads,SigQи т.д. - io — счётчики I/O:
rchar,wchar,syscr,syscw,read_bytes,write_bytes,cancelled_write_bytes. - wchan — символ функции ядра, в которой спит процесс.
- comm — короткое имя задачи (
TASK_COMM_LEN= 16 байт вместе с завершающим\0, видимо до 15 байт; доступно для записи). - task/ — подкаталоги по TID для каждого потока (
/proc/[PID]/task/[TID]). - mounts, mountinfo, mountstats — точки монтирования, видимые в mount namespace процесса.
- net/ — сетевые статистики namespace процесса.
Память
- numa_maps — карта VMA по NUMA-узлам.
- clear_refs — запись управляет сбросом access/dirty-битов PTE.
- pagemap — соответствие виртуальных страниц физическим (бинарный формат, см.
Documentation/admin-guide/mm/pagemap.rst). - coredump_filter — битовая маска: какие сегменты включать в core dump.
Безопасность и namespaces
- uid_map, gid_map — таблицы трансляции UID/GID для user namespace.
- setgroups —
allow/denyдляsetgroups(2)в user namespace. - cgroup — путь(и) cgroup, к которым принадлежит процесс (v1: на контроллер, v2: одна запись).
- loginuid — UID, заданный при логине (PAM, для auditd).
- sessionid — идентификатор audit-сессии.
- oom_score — текущая оценка OOM killer.
- oom_score_adj — корректировка (-1000…1000);
-1000исключает процесс из OOM. - oom_adj — устаревший интерфейс (-17…15), сохранён для совместимости.
- attr/ — LSM-атрибуты (SELinux:
current,prev,exec,fscreate,keycreate,sockcreate). - ns/ — symlink'и на namespaces процесса (mnt, pid, net, ipc, uts, user, cgroup, time).
Планирование
- sched — параметры планировщика (policy, prio, vruntime).
- schedstat —
time on CPU,time waiting,# timeslices. - autogroup — настройки autogroup-планирования.
- cpuset — путь cpuset cgroup.
- timers, timerslack_ns — POSIX-таймеры процесса и значение
timer slack.
Прочее
- auxv — auxiliary vector, передаваемый ELF-загрузчиком (см.
getauxval(3)). - personality — биты
personality(2)(например,PER_LINUX32). - syscall — номер текущего syscall и аргументы (если поток в нём).
- map_files/ — symlink'и на mapped-файлы по диапазону адресов.
- arch_status — архитектурно-зависимые поля (на x86 содержит AVX-state).
Набор файлов зависит от версии ядра, конфигурации (CONFIG_*) и LSM.
Пример
$ grep -E '^(Name|Pid|VmRSS|Threads):' /proc/193412/status
Name: nginx
Pid: 193412
VmRSS: 43008 kB
Threads: 4