Как использовать файловую систему /proc для мониторинга системы Linux

Сегодня мы рассмотрим содержимое каталога /proc, чтобы лучше понять его функциональные возможности. Важно отметить, что каталог /proc является общим для всех дистрибутивов Linux, независимо от их типа и архитектуры.

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

Это виртуальная файловая система, содержащая информацию о процессах и другие данные, связанные с системой, в рамках procfs. Эта файловая система отображается как каталог /proc и монтируется в процессе загрузки системы.

Что такое /proc в Linux

Файловая система /proc служит интерфейсом для структур данных ядра и информации о времени выполнения, предоставляя пользователям и приложениям доступ к подробной информации о процессах, конфигурации системы, аппаратном обеспечении и т.д., раскрывая эти данные через иерархию виртуальных файлов.

Чтобы просмотреть полный список файлов и каталогов в файловой системе /proc, можно воспользоваться:

ls /proc

Навигация по каталогу /proc в Linux

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

cd /proc
ls

Эти пронумерованные каталоги представляют процессы, более известные как идентификаторы процессов (PID), а внутри них – команду, которая их занимает. Файлы содержат системную информацию, такую как память (meminfo), информация о процессоре (cpuinfo) и доступные файловые системы.

Вот несколько основных файлов и каталогов, с которыми вы столкнетесь:

  • /proc/cpuinfo – Информация о процессоре (процессорах) в системе: модель, скорость, количество ядер и т.д.
  • /proc/meminfo – Сведения об использовании памяти и статистика, содержащая общий объем памяти, свободную память и память, используемую каждым процессом.
  • /proc/filesystems – Содержит список всех файловых систем, поддерживаемых ядром.
  • /proc/sys – Список параметров конфигурации и времени работы ядра.
  • /proc/loadavg – Показывает среднее значение загрузки системы за различные промежутки времени: за 1, 5 и 15 минут.
  • /proc/self – Символическая ссылка на каталог самого процесса.
  • /proc/stat – Содержит различные статистические данные о системе, такие как количество запущенных процессов, количество прерываний и количество времени, проведенного в каждом состоянии процессора.
  • /proc/uptime – Содержит количество времени работы системы.
  • /proc/PID – Содержит информацию о конкретном процессе, где PID – идентификатор процесса.

Извлечение системной информации

/proc/meminfo используется для отображения информации об использовании памяти и статистики системы Linux, которая содержит моментальный снимок различных метрик, связанных с памятью, что может быть полезно для мониторинга производительности системы и использования ресурсов.

cat /proc/meminfo

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

Выполнение команды cat для любого из файлов в /proc выведет их содержимое. Информация о любых файлах доступна в man-странице по команде:

man 5 /proc/<filename>

Приведу краткую информацию о файлах /proc:

  • /proc/cmdline – Информация о командной строке ядра.
  • /proc/console – Информация о текущих консолях, включая tty.
  • /proc/devices – Драйверы устройств, настроенные для запущенного ядра.
  • /proc/dma – Информация о текущих каналах DMA.
  • /proc/fb – Устройства фреймбуфера.
  • /proc/filesystem – Текущие файловые системы, поддерживаемые ядром.
  • /proc/iomem – Текущая карта системной памяти для устройств.
  • /proc/ioports – Зарегистрированные области портов для связи ввода-вывода с устройством.
  • /proc/loadavg – Средняя загрузка системы.
  • /proc/locks – Файлы, блокируемые ядром в данный момент.
  • /proc/meminfo – Информация о системной памяти.
  • /proc/misc – Различные драйверы, зарегистрированные для различных основных устройств.
  • /proc/modules – Загруженные в данный момент модули ядра.
  • /proc/mounts – Список всех используемых системой монтирований.
  • /proc/partitions – Подробная информация о доступных системе разделах.
  • /proc/pci – Информация о каждом PCI-устройстве.
  • /proc/stat – Запись или различные статистические данные, сохраненные с момента последней перезагрузки.
  • /proc/swap – Информация о пространстве подкачки.
  • /proc/uptime – Информация о времени работы (в секундах).
  • /proc/version – Версия ядра, версия gcc и установленный дистрибутив Linux.

Извлечение информации о процессах

В нумерованных каталогах /proc вы найдете несколько файлов и ссылок. Помните, что номера этих каталогов соотносятся с PID выполняемой в них команды.

Например, при переходе к /proc/<PID> можно получить такие сведения:

  • /proc/<PID>/cmdline – аргументы командной строки, использованные для запуска процесса.
  • /proc/<PID>/status – Подробная информация о состоянии, включая использование памяти и статистику процесса.
  • /proc/<PID>/fd – Символические ссылки на файлы, открытые процессом.

Давайте на примере посмотрим папку /proc/12.

cd /proc/12
ls

Если я выполню:

cat /proc/12/status

то получу следующее:

Итак, что это значит? Ну, самое важное находится в верхней части. Из файла состояния видно, что этот процесс принадлежит rcu_tasks_rude_kthread. Его текущее состояние – idle, а ID процесса – 12, очевидно.

Мы также можем видеть, кто его запускает, поскольку UID и GID равны 0, что указывает на принадлежность процесса пользователю root.

В любом нумерованном каталоге имеется аналогичная структура файлов, и наиболее важные из них с их описанием выглядят следующим образом:

  • cmdline – командная строка процесса
  • environ – переменные окружения
  • fd – дескрипторы файлов
  • limits – содержит информацию о пределах процесса
  • mounts – связанная информация

В нумерованном каталоге можно также заметить ряд ссылок:

  • cwd – ссылка на текущий рабочий каталог процесса
  • exe – ссылка на исполняемый файл процесса
  • root – ссылка на рабочий каталог процесса

Это должно помочь вам начать знакомство с каталогом /proc и позволит понять, как получают информацию некоторые команды, такие как uptime, lsof, mount, ps и др.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)