Немного о директории /proc в Linux

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

Информация о процессах в директории /proc

Информация о процессах хранится в директориях /proc/N, где N — числовой идентификатор процесса. В этой директории содержатся различные псевдо-файлы, которые содержат информацию о самом процессе и связанном с ним окружении.

/proc/N/cmdline — Содержимое командной строки, которой был запущен процесс.

/proc/N/environ — Описание окружения, в котором работает процесс. Оно может быть полезно для просмотра содержимого окружения, если вам надо, например, посмотреть, была ли установлена переменная окружения перед запуском программы.

/proc/N/exe — Символическая ссылка на выполнимый файл запущенной программы.

/proc/N/limits — Лимиты на использование системных ресурсов, актуальные для работающего процесса.

/proc/N/mounts — Список смонтированных ресурсов, которые доступны процессу

/proc/N/status — Статус работающей программы. Он включает в себя такую информацию как идентификатор родительского процесса, статус самого процесса, его название, его идентификатор, идентификатор пользователя и группы, группы, в которые входит владелец процесса, сколько потоков использует процесс, сколько памяти он использует и так далее.

В этой же директории содержится несколько псевдо-директорий:

/proc/N/cwd — Текущая директория для процесса. Представлена символической ссылкой на директорию. Если рабочая директория для процесса изменится, изменится и ссылка.

/proc/N/fd — Файловые дескрипторы, которые используются процессом. Для программы bash, например, там по умолчанию будут дескрипторы 0, 1, 2 и 255, указывающие на виртуальный терминал, в котором запущен процесс, например, /dev/pts/6.

/proc/N/fdinfo — Информация о файловых дескрипторах. Каждый файл в этой директории содержит поля pos (позиция курсора), flags (флаги, с которыми этот дескриптор был открыт) и mnt_id (идентификатор точки монтирования из списка, содержащегося в файле /proc/N/mountinfo)

/proc/N/root — Символическая ссылка на директорию, которая для данного процесса является корневой

/proc/N/net — Сетевые системные ресурсы и их параметры, действующие для конкретного процесса.

Общесистемные псевдо-файлы и псевдо-директории

/proc/acpi — директория, связанная с управлением питанием и различным устройствами. От компьютера к компьютеру содержимое этой директории отличается. Через эту директорию можно посылать управляющие сигналы устройствам. Например: в моем ноутбуке есть кнопка включения подсветки для клавиатуры. Сочетание клавиш, которые для этого используются, — это Fn плюс кнопка с изображением лампочки на клавиатуре. Но я могу включать и выключать подсветку программно.
Включить:

Выключить:

Таким образом, можно на некоторое событие в системе повесить обработчик (на баше), который будет мигать лампочкой, если пришло письмо или произошло еще что-нибудь. Однако, возможность таким образом работать с устройствами зависит от модели ноутбука и обычно драйверов устройств. Устройства именуются очень часто по-разному, и вам надо будет предварительно посмотреть, что у вас есть и как это можно использовать.

Через директорию /proc/acpi также, например, можно проверить, открыт или закрыт ноутбук. Для этого на моем ноутбуке можно проверить содержимое файла /proc/acpi/button/lid/LID/state. Если в файле содержится «state:   open», значит крышка открыта.

/proc/asound — директория, связанная со звуковыми устройствами. Например, файл /proc/asound/cards содержит звуковые карты, доступные в системе.

/proc/bus — информация о системных шинах и устройствах, которые к ним подключены. Например, файл /proc/bus/input/devices содержит информацию о различных устройствах, список можно получить такой командой:

/proc/fs — Информация о файловых системах. Например, вам нужно посмотреть опции, с которыми в данный момент работает файловая система ext4, размещенная на разделе sda2. Это можно сделать командой

/proc/sys — Псевдо-директория, содержащая массу информации о системе. К примеру, файл /proc/sys/dev/cdrom/info содержит информацию о CD/DVD-ROM, который установлен в системе. Выглядит эта информация так:

В общем-то, всё понятно. Название устройства и различные его характеристики, названные человеческими словами. Как видно выше, мой DVD-RW много чего умеет, но не умеет выбирать диски.

/proc/sys/fs — Как понятно по названию, псевдо-директория, содержащая информацию о подсистеме, связанной с файловыми системами. Опять же, пример: /proc/sys/fs/pipe-max-size. Этот псевдо-файл содержит максимальный размер буфера пайпа. Поэтому если вдруг у вас некорректно работает какой-то скрипт, в котором данные передаются через пайп, есть повод задуматься, какого размера у вас буфер пайпа и заглянуть в этот псевдо-файл. Возможно вы после этого захотите воспользоваться командами «exec» и «read» с опцией «-u».

/proc/sys/net — Общесистемные сетевые параметры. Например:

Включить форвардинг пакетов между двумя сетевыми интерфейсами.

/proc/sys/vm — Параметры виртуальной памяти. Например, вы можете сбросить кэш и освободить немного памяти, используемой под кэш командой

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

Когда вы познакомитесь с (псевдо)директорией /proc, вы сможете получать массу информации о системе без всяких утилит, просто при помощи команды cat.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *