Файловая система /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. Обращение к этим файловым объектам позволяет получить текущую информацию об аппаратной платформе и драйверах устройств, а также много иной интересной информации.