Linux proc для чего

Каталог /proc в Linux

В этой статье мы заглянем внутрь каталога /proc и познакомимся с его содержимым. Каталог /proc присутствует во всех системах Linux, независимо от версии или архитектуры.

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

Итак, давайте перейдем в этот каталог.

Теперь взглянем на содержимое этого каталог

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

Заглянем в один из файлов:

$ cat /proc/meminfo
MemTotal: 5885640 kB
MemFree: 3411236 kB
MemAvailable: 5208636 kB
Buffers: 5020 kB
Cached: 1866900 kB
SwapCached: 0 kB
Active: 823052 kB
Inactive: 1219040 kB
Active(anon): 640 kB
Inactive(anon): 170408 kB
Active(file): 822412 kB
Inactive(file): 1048632 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
.

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

Краткое описание этих файлов следующее:

  • /proc/cmdline — параметры загрузки ОС
  • /proc/console s — информация об используемой консоли
  • /proc/devices — драйверы устройств, работающие в данный момент
  • /proc/dma — информация о текущих каналах DMA
  • /proc/fb — устройства фреймбуфера
  • /proc/filesystems — файловые системы, поддерживаемые текущей версией ядра
  • /proc/iomem — здесь содержится текущая карта системной памяти для устройств
  • /proc/ioports — зарегистрированные диапазоны портов и устройства, которые их используют.
  • /proc/loadavg — показывает нагрузку на систему в разрезе времени, а так же количество запущенных процессов и PID последнего процесса.
  • /proc/locks — файлы заблокированные ядром
  • /proc/meminfo — информация о системной памяти.
  • /proc/misc — драйверы для подключаемых устройств.
  • /proc/modules — загруженные в данный момент модули ядра.
  • /proc/mounts — точки монтирования, используемые системой.
  • /proc/partitions — информация о разделах, доступных системе.
  • /proc/pci — информация о pci-устройствах.
  • /proc/stat — записи и различная статистическая информация, хранящаяся с момента последней перезагрузки.
  • /proc/swaps — информация о месте в разделе Swap.
  • /proc/uptime — информация о времени работы с момента запуска системы ( в секундах)
  • /proc/version — версия ядра, версия GCC и установленный дистрибутив Linux.
Читайте также:  Открыть скрытые папки линукс

В пронумерованных каталогах /proc находится несколько файлов и ссылок. Номера этих каталогов соответствуют PID выполняемой в них команды. Давайте рассмотрим пример. В моей системе есть имя папки /proc/507:

Давайте заглянем в файл status

$ cat status
Name: scsi_tmf_0
Umask: 0000
State: I (idle)
Tgid: 507
Ngid: 0
Pid: 507
PPid: 2
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups:
NStgid: 507
NSpid: 507
NSpgid: 0
NSsid: 0
Threads: 1
SigQ: 7/22833
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: ffffffffffffffff
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 000001ffffffffff
CapEff: 000001ffffffffff
CapBnd: 000001ffffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 0
Speculation_Store_Bypass: thread vulnerable
Cpus_allowed: 3
Cpus_allowed_list: 0-1
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 2
nonvoluntary_ctxt_switches: 0

Разберем, что все это значит? Важная часть находится наверху. Из файла состояния видно, что этот процесс принадлежит scsi_tmf_0. Находится в состоянии простоя, и его идентификатор процесса, равен 507. Мы также можем видеть, кто запустил процесс. Здесь UID и GID равны 0, что указывает на то, что этот процесс принадлежит пользователю root.

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

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

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

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

Заключение

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

Источник

Оцените статью
Adblock
detector