Поиск по сайту:

/proc — получить информацию о процессе Linux и оборудовании


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

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

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

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

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

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

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 содержит кучу информации о памяти вашей системы, включая общий доступный объем (в КБ) и объем свободной памяти в двух верхних. линии.

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

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/ предоставляет следующую информацию:

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

Давайте воспользуемся примером для просмотра папки с именем /proc/12.

cd /proc/12
ls

Если я бегу:

cat /proc/12/status

Я получаю следующее:

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

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

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

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

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

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

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