Файловая система /proc

В системе Linux присутствует виртуальный файловый объект, именуемый каталогом /proc (process). Точнее сказать, этот объект существует только во время работы системы в оперативной памяти компьютера. Это виртуальная файловая система, которая обеспечивает связь с ядром и монтируется в каталогу /proc. Виртуальный каталог /proc предназначен для предоставления текущих параметров о компьютерной системе и представляет большой интерес, в том числе с позиций компьютерной безопасности. Многие из утилит, выводящие информацию о системе (например, команда ps), берут исходные данные именно из этого каталога.

В виртуальной файловой системе /proc размер почти всех файлов равен нулю, и любой пользователь, включая администратора, лишен права на запись в эти файлы. Право на чтение почти всех файлов имеет каждый зарегистрированный пользователь системы. В то же время некоторая часть виртуальных файлов доступна и на запись, например, для установки параметров ядра.

Объект /proc включает в себя файлы и каталоги с числовыми и символьными именами. Каталоги с числовыми именами содержат информацию о каждом выполняющемся процессе, а само имя каталога образовано идентификатором выполняемого процесса PID. При создании процесса соответствующий каталог появляется, а при уничтожении процесса - исчезает. В каждом из таких «числовых» каталогов содержатся одни и те же файловые объекты (табл. 1).

Таблица 1 Содержимое «числовых» подкаталогов каталога /proc

Имя «файла» в

подкаталоге

/proc/PID

Содержимое «файла»

cmdline

Список аргументов командной строки процесса (параметры, передаваемые программе). Список представлен одной строкой, в которой аргументы отделяются друг от друга нулевыми символами

cwd

Ссылка на каталог, из которого была выполнена команда, запустившая данный процесс

Продолжение табл. 1

environ

Переменные окружения (USER, HOME, PATH и др.). Элементы списка разделяются нулевыми символами.

exe

Ссылка на исполняемый файл процесса

fd

Каталог, содержащий записи о файлах, открытых данным процессом. Каждая запись - это символическая ссылка на файл или устройство.

maps

Исполняемые файлы и библиотеки, отображенные в память процесса

mem

Память процесса

root

Ссылка на корневой каталог процесса (обычно /)

stat

Состояние процесса на момент просмотра

statm

Состояние памяти процесса. Содержит список из 7 чисел, разделенных пробелами. Эти числа:

• общий размер процесса в Мб

• размер резидентной части процесса

• размер совместно используемой памяти

• размер сегмента кода

• размер загруженных библиотек

• объем памяти стека

• число модифицированных страниц памяти

status

Состояние процесса в виде, предназначенном для пользователя. Файл содержит идентификатор процесса, родительского процесса, реальный и эффективный идентификаторы пользователя, статистику использования памяти и битовые маски, указывающие, какие сигналы процессом перехватываются, игнорируются или блокируются.

О назначении файлов и каталогов с символьными именами можно догадаться по этим именам. Например, сведения о последовательных портах содержатся в файле /proc/tty/driver/serial. Обращение к этим файловым объектам позволяет получить текущую информацию об аппаратной платформе и драйверах устройств, а также много иной интересной информации.