Procfs | это... Что такое Procfs? (original) (raw)
procfs — виртуальная файловая система, используемая в UNIX-like операционных системах. procfs позволяет получить доступ к информации о системных процессах из ядра, она необходима для выполнения таких команд как ps, w, top. Обычно её монтируют на /proc. procfs создает двухуровневое представление пространств процессов. На верхнем уровне процессы представляют собой директории, именованные в соответствии с их pid. Также на верхнем уровне располагается директория curproc, в которой хранятся ссылки на процессы, выполняющие запросы на поиск.
Каждая директория верхнего уровня содержит следующие файлы:
- ctl — файл только для записи, поддерживающий множество операций, которые записываются в него в виде строк:
- attach — останавливает целевой процесс и подготавливает вызывающий ее процесс для выполнения отладки целевого.
- detach — продолжает выполнение целевого процесса и снимает его из-под контроля процесса-отладчика (последний не обязан быть вызывающим процессом).
- run — продолжает выполнение целевого процесса до поступления сигнала, достижения брейк-поинта или завершения целевого процесса.
- step — выполняет одну команду целевой программы не генерируя иных сигналов.
- wait — ожидает когда целевой процесс достигнет стабильного состояния, готового для отладки. Целевой процесс должен быть в этом состоянии до того как будут разрешены другие команды.
- dbregs — Отладочные регистры, соответствующие struct dbregs в <machine/reg.h>. dbregs сейчас применяется лишь в архитектуре i386.
- etype — тип выполняемого файла к которому идет обращение в file.
- file — Символьная ссылка на файл, из которого читался текст процесса. Это может использоваться для получения доступа к таблице идентификаторов процесса, или для запуска новой копии процесса. Если файл не найден, то целевое направление принимает значение `unknown'.
- fpregs — регистры с плавающей точкой, соответствующие struct fpregs в <machine/reg.h>. fpregs используется только на машинах с различными множествами универсальных регистров и регистров с плавающей точкой.
- map — карта виртуальной памяти процесса.
- mem — Полный образ виртуальной памяти процесса. Можно обратиться лишь к тому адресу, который существует в процессе. Чтение и запись в этот файл изменяют процесс. Запись в текстовый сегмент применяется лишь для этого процесса (изменения не повлияют на другие копии этого процесса).
- note — используется для отправки сигнала процессу. Не применяется.
- notepg — используется для отправки сигнала группе процессов. Не применяется.
- regs — позволяет доступ на чтение и запись к множеству регистров процесса данный файл содержит структуру бинарных данных struct regs описанную в <machine/reg.h>. regs доступен на запись только когда процесс остановлен.
- rlimit — файл, доступный только на чтение, содержащий текущий и максимальный размер. Каждая строка имеет формат rlimit current max, где −1 обозначает бесконечность.
- status — статус процесса. Файл доступен только для чтения и содержит единственную строку, состоящую из полей, разделенных пробелами:
- имя команды
- id процесса
- id родительского процесса
- id группы процесса
- id сессии
- major, minor управляемого терминала, или −1,-1 в ином случае
- список флагов процесса: ctty если это управляемый терминал, sldr если процесс управляет сессией, noflags если ни один из вышеперечисленных флагов не установлен
- время запуска процесса в секундах и микросекундах, разделенных запятой
- время пользователя в секундах и микросекундах, разделенных запятой
- системное время в секундах и микросекундах, разделенных запятой
- время ожидания сообщения
- мандат процесса, состоящий из id фактического пользователя и списка групп (первый элемент которого является id фактической группы), разделенных запятой
- имя хоста, в пределах которого запущен процесс, или `-` если процесс запущен без ограничений
Множество важной информации содержится в файлах корня /proc. Из них обычными командами просмотра можно извлечь сведения о процессоре (/proc/cpuinfo), текущей конфигурации ядра системы (/proc/config.gz), загруженных его модулях (/proc/modules), устройстах, подсоединенных к шине PCI (/proc/pci) — в частности, иногда только тут можно узнать подробности о своей сетевой карте и внутреннем модеме, необходимые для правильной их настройки.
Все файлы, открытые процессом, представлены в виде символических ссылок в каталоге /proc//fd, а ссылка на корневой каталог процесса хранится как /proc//root.
Так как это не настоящая файловая система, procfs не использует никакие накопители данных и ограничена только оперативной памятью.
procfs поддерживается следующими ОС:
Ссылки
- «Изучаем возможности директории /proc»(рус.) — перевод на русский язык статьи про procfs.