procfs

procfs — специальная файловая система, используемая в UNIX-подобных операционных системах. Позволяет получить доступ к информации из ядра о системных процессах. Необходима для выполнения таких команд как ps, w, top. Обычно её монтируют на /proc. procfs создаёт двухуровневое представление пространств процессов. На верхнем уровне процессы представляют собой каталоги, именованные в соответствии с их pid. Также на верхнем уровне располагается ссылка на каталог, соответствующую процессу, выполняющему запрос; она может иметь различное имя в различных ОС (curproc во FreeBSD, self в Linux). Также данная файловая система поддерживается в операционных системах QNX, IBM AIX и Solaris.

Структура файловой системы procfs включает в себя следующие основные элементы:
1. Каталоги с номерами процессов: Каждый процесс имеет свой собственный каталог с номером в каталоге /proc. Например, для процесса с PID 1234 будет создан каталог /proc/1234.
2. Файлы с информацией о процессе: Внутри каталога процесса содержатся различные файлы с информацией о процессе, такие как cmdline (аргументы командной строки), status (статус процесса), stat (статистика процесса) и другие.
3. Специальные файлы и каталоги: В procfs также существуют специальные файлы и каталоги, которые предоставляют доступ к различным системным параметрам и настройкам, такие как файл /proc/cpuinfo (информация о процессоре), файл /proc/meminfo (информация о памяти) и др.
4. Ссылки на файлы управления процессами: Procfs также содержит файлы, с помощью которых можно управлять процессами, такие как файлы для отправки сигналов процессам (например, файл /proc/PID/signal).
Procfs является виртуальной файловой системой, что означает, что данные в ней не хранятся на диске, а генерируются динамически при обращении к ним. Это делает procfs удобным инструментом для мониторинга и управления процессами в реальном времени.

Впервые procfs появилась в вышедшей в 1985 году 8-й редакции UNIX и была призвана предоставить интерфейс для управления процессами, более удобный, чем вызов ptrace. Она была подробно описана Томом Киллианом в работе «Processes as Files» («Процессы как файлы») в 1984 году. Каждый процесс был представлен файлом, в который могла производиться запись. Количество имеющихся вызовов ioctl равнялось 11.

Основные отличия procfs от других файловых систем:

1. Процессная файловая система (procfs) представляет информацию о запущенных процессах и ядерных структурах в виде файлов и каталогов в файловой системе.

2. procfs не хранит данные на диске, а предоставляет динамически создаваемые данные о процессах и системе в реальном времени.

3. В procfs каждый процесс представлен отдельным каталогом с именем, равным его идентификатору (PID). Внутри каталога процесса содержатся файлы, предоставляющие информацию о состоянии процесса, его ресурсах и других связанных с ним параметрах.

4. Кроме информации о процессах, procfs также  может содержать файлы и каталоги, представляющие различные аспекты системы, такие как информация о ядерных структурах, параметры ядра и другие системные данные. Некоторые из них могут быть использованы в Zabbix при помощи расширений.

5. Procfs обеспечивает возможность считывания информации из файлов и записи в них для управления процессами и системой (не в полной мере реализовано в Linux).

6. Использование procfs позволяет утилитам и программам получать доступ к динамической информации о процессах и системе, что облегчает мониторинг и анализ работы операционной системы.

Обсуждение закрыто.