/proc (procfs) — виртуальная файловая система, предоставляющая доступ к:
- информации о процессах
- состоянию ядра
- параметрам конфигурации системы
Файловая система формируется ядром динамически и не хранит данные на диске.
Тип монтирования:
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
Назначение
procfs решает три основные задачи:
- Экспорт информации о процессах
- Предоставление агрегированного состояния системы
- Интерфейс управления параметрами ядра (через
/proc/sys)
Модель данных
Общая структура
Иерархия /proc состоит из:
- каталогов процессов (
/proc/<pid>) - системных информационных файлов (
/proc/*) - конфигурационного пространства (
/proc/sys)
Структура не является строгим отражением внутренних структур ядра.
Представление данных
- Формат преимущественно текстовый
- Часто содержит:
- key-value пары
- табличные данные
- агрегированные метрики
- Один файл может содержать несколько логически независимых значений
Пример:
cat /proc/meminfo
Каталоги процессов
Каждый процесс представлен каталогом:
/proc/<pid>/
Основные файлы
cmdline— аргументы запускаstatus— состояние процесса (читаемый формат)stat— состояние (машиночитаемый формат)maps— карта памятиfd/— открытые файловые дескрипторыenviron— переменные окруженияexe— символическая ссылка на исполняемый файлcwd— текущая рабочая директория
Особенности
- Данные обновляются в реальном времени
- Некоторые файлы требуют повышенных привилегий
- Форматы могут различаться между версиями ядра
Системные файлы
Общая информация
/proc/cpuinfo— информация о CPU/proc/meminfo— использование памяти/proc/uptime— время работы системы/proc/loadavg— средняя нагрузка/proc/version— версия ядра
Поведение
- Представляют агрегированные данные
- Формат ориентирован на человека и парсинг
- Не гарантируют стабильный ABI
/proc/sys (sysctl)
Назначение
Интерфейс для настройки параметров ядра во время выполнения.
Альтернативный доступ:
sysctl -a
sysctl -w key=value
Структура
Иерархия отражает подсистемы ядра:
/proc/sys/net/— сеть/proc/sys/vm/— управление памятью/proc/sys/fs/— файловые системы/proc/sys/kernel/— общие параметры ядра
Пример:
/proc/sys/net/ipv4/ip_forward
Семантика
- Значения читаются через
read - Изменяются через
write - Изменения применяются немедленно
- Обычно не сохраняются после перезагрузки (если не настроен sysctl.conf)
Интерфейс и операции
Поддерживаемые операции
openreadwrite(ограниченно)readdir
Особенности
- Размер файлов может быть динамическим
- Некоторые файлы генерируются при каждом чтении
- Запись может иметь побочные эффекты
Ограничения и особенности
- Отсутствие строгой схемы данных
- Нестабильность форматов (особенно для парсинга)
- Возможны race conditions при чтении изменяющихся данных
- Некоторые интерфейсы считаются устаревшими
Безопасность
- Доступ контролируется правами файлов и capability
- Некоторые данные скрываются для непривилегированных пользователей
- Возможны ограничения через:
hidepid- namespaces (PID namespace)
Практическое использование
Диагностика
- анализ процессов
- проверка состояния системы
- отладка
Мониторинг
- сбор метрик
- интеграция с агентами мониторинга
Управление
- изменение параметров через
/proc/sys - настройка сетевых и системных параметров
Ограничения для разработки
- Не рекомендуется полагаться на стабильность форматов
- Для новых интерфейсов предпочтительнее sysfs
- Для сложных взаимодействий использовать:
- netlink
- ioctl
- специализированные API
12. Краткое определение
/proc — виртуальная файловая система, предоставляющая доступ к состоянию процессов, агрегированным данным системы и параметрам ядра через файловый интерфейс.