Как использовать файловую систему /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 и др.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен www.tecmint.com
Комментарии (0)