/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, и это лишь некоторые из них.