Файловая система /proc в Linux: обзор и практическое руководство
Кратко
/proc — виртуальная файловая система в Linux, которая представляет состояние ядра и запущенных процессов в виде файлов и каталогов. Она позволяет быстро получать информацию о железе, памяти, монтированных файловых системах и каждом процессе без специальных системных вызовов.

Если вы заглянули в корневой каталог Linux, возможно, заметили каталог /proc с множеством чисел (PID) и других файлов. Что это за каталог и зачем он нужен? На практике /proc содержит много полезной информации о системе и запущенных процессах — это интерфейс ядра в виде «файлов». В этой статье подробно разбираем устройство procfs и даём практические приёмы по получению системной информации.
Что такое файловая система proc (procfs)
procfs — идея, частично заимствованная из исследовательской системы Plan 9 (Bell Labs). Концепция опирается на принцип «всё — файл», доведённый до логического конца: все запущенные процессы и множество параметров ядра отображаются как иерархия файлов.
Процедурные особенности:
- /proc — виртуальная файловая система. Файлы не хранятся на диске; они генерируются по запросу ядром.
- Большинство файлов читаются как обычный текст; некоторые — двоичные или содержат NUL-символы (например, environ).
- Полезно для скриптов: стандартные текстовые утилиты (cat, grep, awk, sed) применимы.
Полезные файлы в корне /proc
Некоторые файлы и каталоги в /proc, которые стоит знать:
- /proc/cpuinfo — сведения о процессоре (ядрах, моделях, кешах).
- /proc/meminfo — состояние оперативной памяти и кешей.
- /proc/mounts — список смонтированных файловых систем.
- /proc/uptime — время работы системы (в секундах).
- /proc/partitions — таблица разделов (логическое представление).
- /proc/sys — интерфейс параметров sysctl (доступ для чтения/записи).
Чтобы посмотреть cpuinfo, используйте:
cat /proc/cpuinfoЕсли информации много, удобнее просматривать через постраничный просмотрщик (less, most):
less /proc/cpuinfoИнформация о процессе: каталоги по PID
В /proc каждый запущенный процесс имеет собственный каталог с именем, равным его PID, например /proc/1 для init/systemd.
Внутри каталога процесса часто встречаются:
- exe — символическая ссылка на исполняемый файл процесса. Прочитать реальный путь можно так:
readlink -f /proc//exe - cmdline — аргументы командной строки процесса. Аргументы разделены NUL-байтами, поэтому для удобства можно заменить их на пробелы:
tr '\0' ' ' < /proc//cmdline; echo - environ — переменные окружения (также NUL-разделённые).
- status — человеко-читаемый набор полей: State, Pid, PPid, VmSize, VmRSS и др.
- fd/ — каталог с дескрипторами файлов (символьные ссылки на открытые файлы, сокеты, каналы).
Пример извлечения RSS (физической памяти) процесса:
grep -i VmRSS /proc//status Или быстрый список открытых файлов процесса:
ls -l /proc//fd Команды и приёмы для повседневного использования
Несколько практических приёмов для администратора и разработчика:
- Быстрый обзор памяти и CPU:
cat /proc/meminfo | head -n 10
cat /proc/cpuinfo | grep 'model name' -m1- Найти процессы, открывшие конкретный файл:
lsof /path/to/file # если lsof установлен
# или через /proc (поиск по дескрипторам, дольше):
for pid in $(ls /proc | grep -E '^[0-9]+$'); do
ls -l /proc/$pid/fd 2>/dev/null | grep -q '/path/to/file' && echo $pid
done- Проверить параметры ядра и изменить их (пример — включить форвардинг IPv4):
cat /proc/sys/net/ipv4/ip_forward
# временно включить:
echo 1 > /proc/sys/net/ipv4/ip_forward
# рекомендация для перманентных изменений — /etc/sysctl.conf или /etc/sysctl.d/Когда /proc может вести себя иначе или быть ограниченным
Важно знать ограничения и редкие случаи:
- /proc — виртуальная файловая система: чтение генерирует текущее состояние, а не статический снимок.
- Некоторые файлы доступны только root; обычный пользователь видит ограничения или пустые значения.
- В контейнерах и при использовании опций монтирования (например, hidepid) представление PID и доступ к /proc могут быть ограничены.
- На ряде специализированных дистрибутивов или режимов ядро может не монтировать procfs по умолчанию; его можно смонтировать вручную: mount -t proc proc /proc.
Мини‑плейбук: расследование высокой нагрузки CPU
- Найдите подозрительные процессы:
ps -eo pid,comm,%cpu --sort=-%cpu | head -n 15- Для каждого подозрительного PID изучите /proc:
cat /proc//status
readlink -f /proc//exe
tr '\0' ' ' < /proc//cmdline; echo
ls -l /proc//fd Если процесс «зависает», посмотрите стек (если доступно) с помощью gdb или /proc/
/stack (только для отладки ядра/системных служб). При необходимости ограничьте ресурс (cgroups) или перезапустите службу через systemd.
Чек‑лист для ролей
Системный администратор:
- Проверить /proc/mounts и /proc/sys для неожиданных настроек.
- Использовать /proc/meminfo и /proc/vmstat при анализе OOM/утечек памяти.
Разработчик приложений:
- Для диагностики ошибок смотреть cmdline, environ, fd и exe процесса.
- Помнить про NUL-разделённые файлы (cmdline, environ).
SRE/операции:
- Автоматизировать проверку через скрипты, парся /proc.
- Проверять hidepid и права доступа в контейнерах.
Быстрая шпаргалка (cheat sheet)
- Просмотр CPU: cat /proc/cpuinfo
- Просмотр памяти: cat /proc/meminfo
- Список монтированных FS: cat /proc/mounts
- Информация о процессе: cat /proc/
/status - Путь к исполняемому файлу процесса: readlink -f /proc/
/exe
Краткое резюме
/proc — мощный и гибкий механизм получения информации о текущем состоянии ядра и процессов в Linux. Это интерфейс в виде «файлов», пригодный для интерактивной диагностики и автоматизации. Помните об особенностях доступа (права, контейнеры, hidepid) и используйте стандартные утилиты для удобного чтения.
Важное: не пытайтесь редактировать произвольные файлы в /proc без понимания последствий; корректное изменение настроек ядра следует выполнять через sysctl или системные конфигурационные файлы.
1‑строчный словарь
- procfs — виртуальная файловая система, предоставляющая интерфейс ядра в виде файлов.
Похожие материалы
Как перезапустить Outlook на Windows
Настройка iMessage и Сообщений на Mac
Как очистить Mac и безопасно освободить место
Google Photos в Windows 10 — установка и руководство
Как скрыть приложения в OxygenOS 12 и новее