Linux: файловая система /proc

Виртуальная файловая система ядра: сведения о системе, сети и процессах в виде обычных файлов

Что такое /proc

Каталог /proc не хранится на диске. Ядро создаёт его на лету, и каждый файл в нём отражает текущее состояние системы. Чтение файла возвращает данные, а запись в некоторые файлы меняет параметры ядра. Поэтому утилиты вроде ps, top, free и ss в основном читают именно /proc.

Каталоги с числовыми именами (например, /proc/4312) соответствуют процессам с таким PID.

Системные файлы

ПутьЧто содержит
/proc/cmdlineПараметры ядра, переданные при загрузке.
/proc/cpuinfoСведения о процессоре: модель, число ядер, частота.
/proc/diskstatsСтатистика дисковых операций: запросы чтения и записи, объём данных, время.
/proc/filesystemsПоддерживаемые типы файловых систем.
/proc/interruptsКоличество прерываний по каждому ядру процессора.
/proc/loadavgСредняя нагрузка за 1, 5 и 15 минут.
/proc/meminfoИспользование памяти: всего, свободно, буферы и кеш.
/proc/mountsСмонтированные файловые системы: тип и точка монтирования.
/proc/statОбщая статистика системы: процессор, прерывания, переключения контекста.
/proc/swapsАктивные разделы подкачки: размер и занятое место.
/proc/uptimeВремя работы системы и время простоя.
/proc/versionВерсия ядра и сведения о сборке.

Сетевые файлы

ПутьЧто содержит
/proc/net/devСтатистика по каждому интерфейсу: пакеты и байты на приём и передачу, ошибки.
/proc/net/tcpTCP-сокеты IPv4: адреса, порты, состояния, очереди.
/proc/net/routeТаблица маршрутизации IPv4.
/proc/net/sockstatСтатистика сокетов: выделенные и осиротевшие.
/proc/sys/net/ipv4/conf/eth0/Настройки IPv4 для интерфейса eth0.

Файлы процессов: /proc/[PID]

ПутьЧто содержит
/proc/[PID]/cmdlineАргументы командной строки процесса.
/proc/[PID]/ioСтатистика ввода-вывода: прочитанные и записанные байты и операции.
/proc/[PID]/mapsКарта памяти процесса: код, данные, библиотеки.
/proc/[PID]/statСтатистика процесса: время процессора, память, состояние.
/proc/[PID]/statusПодробный статус: состояние, память, число потоков.
/proc/[PID]/fd/Каталог дескрипторов открытых процессом файлов.
/proc/[PID]/net/Сетевые сведения из сетевого пространства имён процесса.

Примеры

# Версия ядра и параметры загрузки
cat /proc/version
cat /proc/cmdline

# Нагрузка и память
cat /proc/loadavg
grep -E "MemTotal|MemAvailable" /proc/meminfo

# Процессор
grep "model name" /proc/cpuinfo | head -1

# Время работы системы
cat /proc/uptime

# Сетевая статистика интерфейсов
cat /proc/net/dev

# Какие файлы открыты процессом с PID 4312
ls -l /proc/4312/fd

# Сколько данных читает и пишет процесс
cat /proc/4312/io

# Состояние и потоки процесса
grep -E "State|Threads|VmRSS" /proc/4312/status

# Лимиты процесса
cat /proc/4312/limits

Полезные приёмы

Запись в файлы /proc/sys меняет поведение ядра сразу, и изменения пропадают после перезагрузки. Постоянные настройки кладите в /etc/sysctl.d/. Не записывайте в файлы /proc наугад.
Для повседневной работы не обязательно читать /proc напрямую: утилиты free, uptime, ss и ps берут данные оттуда и выводят их в удобном виде. Знать /proc полезно, когда нужно быстро проверить значение без установленных инструментов, например в минимальном контейнере.