Сегодня мы заглянем во внутрь директории /proc, познакомимся с её функцией и строением. Директория /proc присутствует на всех системах Linux независимо от дистрибутива и архитектуры.
Начнём с уяснения того, что строго говоря директория /proc это НЕ настоящая файловая система. Это виртуальная файловая система. Внутри procfs содержатся данные о процессах и другая системная информация. Она отображается в /proc и монтируется во время загрузки.
Значение файлов в /proc
Для начала давайте перейдём в директорию /proc и оглядимся там:
cd /proc ls -l
В глаза бросаются несколько файлов со знакомыми названиями, а также множество директорий название которых состоит из цифр.
Директория с числами в качестве названий представляют процессы и названы по их PID, а внутри них информация о команде, к которой они относятся.
Файлы содержат информацию о системе, такую как память (meminfo), информация о центральном процессоре (cpuinfo) и доступных файловых системах.
Давайте начнём с того, что взглянем на один из этих файлов:
cat /proc/meminfo
Мы увидем что-то вроде такого:
Как вы можете видеть, /proc/meminfo содержит информацию о памяти вашей системы, включая общее доступное количество (в килобайтах) и количество свободной памяти в верхних строках. При этом обратите внимание на характер информации — здесь нет данных о железе, о производителе и прочем подобном. Здесь информация с точки зрения ядра системы — общее количество и разные программные настройки.
Поскольку все файлы в этой папке представляют собой простой текст, вы можете любой из них посмотреть с помощью команды cat.
Пробежимся быстро по файлам из директории /proc:
- /proc/bus/input/devices – Информация о всех устройствах ввода.
- /proc/bus/pci/devices – Информация о каждом PCI устройстве.
- /proc/cmdline – информация о строке запуска ядра.
- /proc/config.gz – Полная информация о конфигурации ядра. Это единственный сжатый файл, для его просмотра используйте команду zcat /proc/config.gz
- /proc/consoles – Информация о текущих консолях включая tty.
- /proc/crypto – Поддерживаемые данным ядром методы шифрования
- /proc/devices – Драйверы устройств настроенные в данный момент для запущенного ядра.
- /proc/dma – Информация о текущих DMA каналах.
- /proc/fb – Framebuffer устройства.
- /proc/filesystems – Файловые системы поддерживающие текущим ядром.
- /proc/iomem – Текущая карта системной памяти для устройств.
- /proc/ioports – Зарегистрированные регионы портов для связи ввода-вывода с устройством.
- /proc/kmsg – Лог системных событий
- /proc/loadavg – Средняя загрузка системы.
- /proc/locks – Файлы, заблокированные в настоящее время ядром.
- /proc/meminfo – Информация о памяти системы (смотрите пример выше).
- /proc/misc – Разные драйверы зарегистрированы для разных основных устройств.
- /proc/modules – Загруженные в настоящее время модули ядра.
- /proc/mounts – Список всех монтирований, используемых системой.
- /proc/net/ – Папка, в которой собрано несколько файлов, содержащих информацию связанную с сетью (интерфейсы, файерволы и прочее)
- /proc/net/dev – Сетевые интерфейсы системы
- /proc/net/wireless – Устройства для подключения к Wi-Fi сетям
- /proc/net/route – Сетевые маршруты
- /proc/partitions – Информация о доступных в системе разделах.
- /proc/stat – Записи или различные статистики хранимые с последней перезагрузки.
- /proc/swaps – Информация о swap разделе.
- /proc/uptime – Информация об аптайме (времени работы) (в секундах).
- /proc/version – Версия ядра, версия gcc, и установленный дистрибутив Linux.
Что означают папки с цифрами в /proc
В директории /proc кроме рассмотренных файлов с именем, имеется много папок обозначенных цифрами, в каждой из них также содержится несколько файлов и ссылок. Помните, что номера директории означают PID команд, которыми был запущен этот процесс. Давайте для примера рассмотрим любую из этих директорий. Допустим я возьму папку с именем /proc/12:
cd /proc/12 ls -l
Пример вывода:
Если я запущу:
cat /proc/12/status
Я получил следующее:
Так что это значит? Итак, важная часть находится наверху. Из файла статуса мы можем видеть, что этот процесс принадлежит rcub. Его текущее состояние sleeping и, очевидно, ID этого процесса равно 12. Мы также можем видеть кто запустил его, поскольку UID и GID равны 0, то это значит, что процесс принадлежит пользователю root.
В любой пронумерованной директории вы сможете увидеть похожую структуру файлов. Самые важные и их краткое описание такие:
- cmdline – строка команды процесса
- environ – переменные окружения
- fd – файловые дескрипторы
- limits – содержит информацию о лимитах процесса
- mounts – связанная с монтированием информация
Также в пронумерованных директориях вы можете увидеть ряд ссылок:
- cwd – ссылка на текущую рабочую директорию процесса
- exe – ссылка на исполнимый файл процесса
- root – ссылка на рабочую директорию процесса
Информация о видеокарте в /proc
Информация о PCI устройствах содержится в файле /proc/bus/pci/devices, а также в поддиректориях /proc/bus/pci. Как и с другими устройствами, здесь нет информации о производителе — только тип устройства и, видимо, используемое адресное пространство.
Больше информации вы сможете найти в папке /proc/driver, пример вывода данных о драйвере NVidia:
cat /proc/driver/nvidia/gpus/0000\:01\:00.0/information
Пример вывода:
Model: GeForce GTX 1050 Ti IRQ: 157 GPU UUID: GPU-e7cc6b38-164e-babb-d5e7-14b23d2e5e05 Video BIOS: 86.07.50.00.54 Bus Type: PCIe DMA Size: 47 bits DMA Mask: 0x7fffffffffff Bus Location: 0000:01:00.0 Device Minor: 0 Blacklisted: No
Здесь информация о модели, версии БИОСа, типе шине, находиться ли устройство в чёрном списке (для отключения) и некоторые другие данные.
Заключение
Эта заметка должна помочь вам в знакомстве с директорией /proc. Также она должна дать вам представление о том, как ряд команд получают свою информацию. Вот только несколько примеров команд, которые используют /proc для своей информации: uptime, lsof, mount и ps.
Связанные статьи:
- Как проверить использование памяти на Linux (78.8%)
- Как закрыть терминал без убийства запущенной в нём команды (28.8%)
- Решение проблемы gnome-keyring-daemon не отвечает в Linux Mint и не даёт выключить компьютер (28.8%)
- Как в Linux Mint 18 включить автоматический вход в систему (28.8%)
- Как ограничить использование процессора программой в Linux (28.8%)
- Как добавлять записи в /etc/fstab. Как использовать /etc/fstab для хранения опций монтирования (RANDOM - 21.2%)