zaLinux.ru

Что такое файловая система /proc в Linux


Сегодня мы заглянем во внутрь директории /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.


Рекомендуемые статьи:

Оставить комментарий

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