Что хранится в папке proc

Что такое файловая система /proc в Linux

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

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

Значение файлов в /proc

Для начала давайте перейдём в директорию /proc и оглядимся там:

Что хранится в папке proc. Смотреть фото Что хранится в папке proc. Смотреть картинку Что хранится в папке proc. Картинка про Что хранится в папке proc. Фото Что хранится в папке proc

В глаза бросаются несколько файлов со знакомыми названиями, а также множество директорий название которых состоит из цифр.

Директория с числами в качестве названий представляют процессы и названы по их PID, а внутри них информация о команде, к которой они относятся.

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

Давайте начнём с того, что взглянем на один из этих файлов:

Мы увидем что-то вроде такого:

Что хранится в папке proc. Смотреть фото Что хранится в папке proc. Смотреть картинку Что хранится в папке proc. Картинка про Что хранится в папке proc. Фото Что хранится в папке proc

Как вы можете видеть, /proc/meminfo содержит информацию о памяти вашей системы, включая общее доступное количество (в килобайтах) и количество свободной памяти в верхних строках. При этом обратите внимание на характер информации — здесь нет данных о железе, о производителе и прочем подобном. Здесь информация с точки зрения ядра системы — общее количество и разные программные настройки.

Поскольку все файлы в этой папке представляют собой простой текст, вы можете любой из них посмотреть с помощью команды cat.

Пробежимся быстро по файлам из директории /proc:

Что означают папки с цифрами в /proc

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

Что хранится в папке proc. Смотреть фото Что хранится в папке proc. Смотреть картинку Что хранится в папке proc. Картинка про Что хранится в папке proc. Фото Что хранится в папке proc

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

Что хранится в папке proc. Смотреть фото Что хранится в папке proc. Смотреть картинку Что хранится в папке proc. Картинка про Что хранится в папке proc. Фото Что хранится в папке proc

Так что это значит? Итак, важная часть находится наверху. Из файла статуса мы можем видеть, что этот процесс принадлежит rcub. Его текущее состояние sleeping и, очевидно, ID этого процесса равно 12. Мы также можем видеть кто запустил его, поскольку UID и GID равны 0, то это значит, что процесс принадлежит пользователю root.

В любой пронумерованной директории вы сможете увидеть похожую структуру файлов. Самые важные и их краткое описание такие:

Также в пронумерованных директориях вы можете увидеть ряд ссылок:

Информация о видеокарте в /proc

Информация о PCI устройствах содержится в файле /proc/bus/pci/devices, а также в поддиректориях /proc/bus/pci. Как и с другими устройствами, здесь нет информации о производителе — только тип устройства и, видимо, используемое адресное пространство.

Больше информации вы сможете найти в папке /proc/driver, пример вывода данных о драйвере NVidia:

Здесь информация о модели, версии БИОСа, типе шине, находиться ли устройство в чёрном списке (для отключения) и некоторые другие данные.

Заключение

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

Источник

Как анализировать вывод /proc/meminfo в Linux

Что хранится в папке proc. Смотреть фото Что хранится в папке proc. Смотреть картинку Что хранится в папке proc. Картинка про Что хранится в папке proc. Фото Что хранится в папке proc

Файловая система /proc — это виртуальная файловая система. Она не хранится на диске, а создается в памяти и используется для предоставления информации о системе (первоначально о процессах, отсюда и название).

Из /proc/meminfo можно получить информацию о свободной памяти, об используемой (и физической, и swap), а также о разделяемой (shared memory) и буферах.

Подробно файловая система /proc описана в man.

Сначала посмотрим показатели, на которые следует обращать внимание в первую очередь.

Основные показатели

MemTotal : доступный объем оперативной памяти (физическая память за вычетом нескольких зарезервированных битов и бинарного кода ядра).

MemFree : Сумма LowFree и HighFree.

MemShared : 0; приведен здесь из соображений совместимости и всегда равен нулю.

Buffers : память в буферном кеше. В настоящее время бесполезен в качестве метрики. Это временное хранилище для страниц, ожидающих записи на диск. Не должно быть слишком большим (обычно около 20 МБ).

Cached : память в кэше страниц за вычетом SwapCache.

SwapCache: память, которая когда-то была выгружена в своп, но потом загружена обратно и все еще находится в файле подкачки. Если будет необходимость в выделении памяти, то эту память не нужно будет выгружать повторно, так как она уже находится в свопе. Это экономит операции ввода-вывода.

Прочие показатели

Cтраницы кэша делятся на «активные» и «неактивные». Идея заключается в том, что если вам нужна память и ее можно взять из кэша, то она будет забрана из неактивных страниц, поскольку ожидается, что она больше не будет использоваться. Подсистема виртуальной памяти постоянно отслеживает, какая память используется, и отмечает это в таблице страниц (pagetable) специальным битом.

Страницы также могут перемещаться обратно в активные. Активные страницы упорядочены в порядке «не использовалась дольше всех» (хотя это очень грубо и в реальности все немного сложнее). Давно не использованные страницы можно переместить в неактивные. В приведенном выше примере неактивная память разделена на две части. Иногда она разбивается на три.

Active : память, которая использовалась совсем недавно. Обычно не освобождается без крайней необходимости.

Inact_dirty : «грязная» означает, что «необходима запись на диск или в своп». Для ее освобождения требуется больше работы. Здесь могут быть файлы, которые еще не записаны на диск. Операции записи на диск происходят не сразу, чтобы не снижать производительность ввода-вывода. Например, если вы пишете логи, то, возможно, лучше подождать, пока у вас будет готова полная запись лога, прежде чем отправлять ее на диск.

Inact_clean: память, которую можно легко освободить. Ядро пытается сохранить немного чистых страниц, чтобы было проще «дышать».

Inact_target : целевая метрика, которую ядро использует, чтобы убедиться, в достаточном количестве неактивных страниц. При превышении этого значения ядро не будет перемещать страницы из активного состояния в неактивное. Страница может стать неактивной разными способами. Например, если вы выполняете длительный последовательный ввод-вывод, то ядро предполагает, что вы не собираетесь использовать эту память, и делает ее неактивной превентивно. Таким образом, вы можете получить больше неактивных страниц, чем целевое значение, потому что ядро помечает некоторый кэш как «скорее всего, никогда не будет использоваться» и позволяет обмануть порядок «использовался последним».

Статистика памяти

LowTotal: общий объем памяти без highmem-памяти.

LowFree : объем свободной памяти в нижней области памяти. Это память, к которой ядро может обращаться напрямую. Все структуры данных ядра должны находиться этой области.

SwapTotal : общий физический размер свопинга.

Dirty : память, ожидающая записи на диск.

Writeback: память, которая в настоящий момент записывается на диск.

Mapped : отображаемые в память файлы с помощью mmaped, например, библиотеки.

Slab : кеш внутренних структур ядра.

PageTables : объем памяти, выделенный для таблиц страниц.

ReverseMaps : количество выполненных обратных отображений.

VmallocTotal : общий размер области памяти vmalloc.

VmallocUsed : используемая память vmalloc.

VmallocChunk : самый большой свободный непрерывный блок в области vmalloc.

При запуске процесса, требующему для работы много памяти, ядро ОС освобождает память, в которой хранились кэшированные данные, и отдает ее новому процессу.

Обычно системной информации о памяти можно доверять, но даже она может быть легко истолкована неверно. Например, посмотрим на top.

Что может сбить с толку, так это буфер и кэш:

Можно увидеть, что используется 16124948K, но почти все эти 15 ГБ используются под кэш и буфер, и в случае, если память потребуется другому процессу, то она будет немедленно освобождена.

Система использует 2448184 КБ (= 2 ГБ) для приложений / процессов, при этом потенциально свободно 13 ГБ, используемой для буферизации и кэширования. Для оценки потребления памяти процессом, вы должны использовать команду free до, во время и после запуска процесса, проделывая это несколько раз, чтобы получить среднее значение оцениваемого показателя.

Для получения информации о потреблении памяти конкретного процесса можно использовать следующие команды:

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

Источник

MNorin.com

Блог про Linux, Bash и другие информационные технологии

Немного о директории /proc в Linux

Что хранится в папке proc. Смотреть фото Что хранится в папке proc. Смотреть картинку Что хранится в папке proc. Картинка про Что хранится в папке proc. Фото Что хранится в папке proc/proc — это не настоящая файловая система. Она виртуальная. Ее основная задача — получение состояния системы и частично выполнение управляющих действий. К сожалению, не так много людей знают, что находится внутри и как этим пользоваться. Поэтому немного расскажу, чем эта директория может быть вам полезна.

Информация о процессах в директории /proc

Информация о процессах хранится в директориях /proc/N, где N — числовой идентификатор процесса. В этой директории содержатся различные псевдо-файлы, которые содержат информацию о самом процессе и связанном с ним окружении.

/proc/N/cmdline — Содержимое командной строки, которой был запущен процесс.

/proc/N/environ — Описание окружения, в котором работает процесс. Оно может быть полезно для просмотра содержимого окружения, если вам надо, например, посмотреть, была ли установлена переменная окружения перед запуском программы.

/proc/N/exe — Символическая ссылка на выполнимый файл запущенной программы.

/proc/N/limits — Лимиты на использование системных ресурсов, актуальные для работающего процесса.

/proc/N/mounts — Список смонтированных ресурсов, которые доступны процессу

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

В этой же директории содержится несколько псевдо-директорий:

/proc/N/cwd — Текущая директория для процесса. Представлена символической ссылкой на директорию. Если рабочая директория для процесса изменится, изменится и ссылка.

/proc/N/fd — Файловые дескрипторы, которые используются процессом. Для программы bash, например, там по умолчанию будут дескрипторы 0, 1, 2 и 255, указывающие на виртуальный терминал, в котором запущен процесс, например, /dev/pts/6.

/proc/N/fdinfo — Информация о файловых дескрипторах. Каждый файл в этой директории содержит поля pos (позиция курсора), flags (флаги, с которыми этот дескриптор был открыт) и mnt_id (идентификатор точки монтирования из списка, содержащегося в файле /proc/N/mountinfo)

/proc/N/root — Символическая ссылка на директорию, которая для данного процесса является корневой

/proc/N/net — Сетевые системные ресурсы и их параметры, действующие для конкретного процесса.

Общесистемные псевдо-файлы и псевдо-директории

/proc/acpi — директория, связанная с управлением питанием и различным устройствами. От компьютера к компьютеру содержимое этой директории отличается. Через эту директорию можно посылать управляющие сигналы устройствам. Например: в моем ноутбуке есть кнопка включения подсветки для клавиатуры. Сочетание клавиш, которые для этого используются, — это Fn плюс кнопка с изображением лампочки на клавиатуре. Но я могу включать и выключать подсветку программно.
Включить:

Через директорию /proc/acpi также, например, можно проверить, открыт или закрыт ноутбук. Для этого на моем ноутбуке можно проверить содержимое файла /proc/acpi/button/lid/LID/state. Если в файле содержится «state: open», значит крышка открыта.

/proc/asound — директория, связанная со звуковыми устройствами. Например, файл /proc/asound/cards содержит звуковые карты, доступные в системе.

/proc/bus — информация о системных шинах и устройствах, которые к ним подключены. Например, файл /proc/bus/input/devices содержит информацию о различных устройствах, список можно получить такой командой:

/proc/fs — Информация о файловых системах. Например, вам нужно посмотреть опции, с которыми в данный момент работает файловая система ext4, размещенная на разделе sda2. Это можно сделать командой

/proc/sys — Псевдо-директория, содержащая массу информации о системе. К примеру, файл /proc/sys/dev/cdrom/info содержит информацию о CD/DVD-ROM, который установлен в системе. Выглядит эта информация так:

В общем-то, всё понятно. Название устройства и различные его характеристики, названные человеческими словами. Как видно выше, мой DVD-RW много чего умеет, но не умеет выбирать диски.

/proc/sys/fs — Как понятно по названию, псевдо-директория, содержащая информацию о подсистеме, связанной с файловыми системами. Опять же, пример: /proc/sys/fs/pipe-max-size. Этот псевдо-файл содержит максимальный размер буфера пайпа. Поэтому если вдруг у вас некорректно работает какой-то скрипт, в котором данные передаются через пайп, есть повод задуматься, какого размера у вас буфер пайпа и заглянуть в этот псевдо-файл. Возможно вы после этого захотите воспользоваться командами «exec» и «read» с опцией «-u».

/proc/sys/net — Общесистемные сетевые параметры. Например:

Включить форвардинг пакетов между двумя сетевыми интерфейсами.

/proc/sys/vm — Параметры виртуальной памяти. Например, вы можете сбросить кэш и освободить немного памяти, используемой под кэш командой

В общем, для начала знакомства с этой директорией достаточно, но я рекомендую по возможности более плотно познакомиться с этой директорией и ее содержимым. Более подробную информацию можно найти в странице руководств в 5 разделе

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

Источник

Что хранится в папке proc

Файловая система proc является важным источником информации о вашей Linux-системе, который попросту нельзя игнорировать. Вообще, proc является псевдо- или виртуальной файловой системой, которая предоставляет пользователям доступ к внутренним структурам ядра Linux. Другими словами, proc не является реальной файловой системой в обычном смысле; она располагается исключительно в оперативной памяти, а не на диске. При этом она автоматически монтируется системой.

Данная файловая система содержит по большей части обычные файлы и директории, поэтому вы можете использовать стандартные инструменты Linux для работы с ней. Все примеры из данной статьи были протестированы в Ubuntu, но, ввиду того, что файловая система proc реализована на уровне ядра Linux, она будет функционировать аналогичным образом в любом дистрибутиве Linux. На всякий случай приведу параметры данной системы:

Базовые приемы работы с файловой системой proc

Для того, чтобы узнать точку монтирования файловой системы proc, достаточно использовать утилиту mount и найти в ее выводе строку, относящуюся к искомой точке монтирования. В большинстве случаев файловая система proc монтируется в директорию /proc:

$ mount | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
.

Получив данную информацию, следует перейти в директорию /proc и исследовать ее содержимое. Вы наверняка обнаружите множество директорий с числовыми именами; эти числа являются идентификаторами (PID) исполняющихся в текущее время процессов. Остальные файлы и директории относятся не к отдельным процессам, а к системе в целом:

$ cd /proc
$ ls
1 131 1627 19788 2190 25870 421 857 loadavg
10 1319 163 19798 2191 25882 423 858 locks
1032 133 164 198 2193 259 425 9 mdstat
1033 1334 165 19913 2195 26 427 957 meminfo
1034 134 16543 1993 2196 2662 429 958 misc
1037 1341 16544 19981 2197 2663 431 acpi modules
1040 1343 16557 19985 2198 27 433 asound mounts
1042 135 16558 2 2199 2792 435 buddyinfo mtrr
1046 138 16559 2004 22 28 437 bus net
1048 139 16560 2019 2200 2803 439 cgroups pagetypeinfo
1051 14 166 2021 2208 2808 441 cmdline partitions
1053 140 17 2026 2210 2826 443 consoles pressure
1054 141 179 2036 2216 2832 445 cpuinfo sched_debug
1055 142 17907 2041 2219 29 447 crypto schedstat
1062 143 18 2042 2222 2935 449 devices scsi
1064 144 1850 2078 2229 2946 451 diskstats self
1065 145 18520 2083 2244 2984 453 dma slabinfo
11 147 1888 2084 2282 2999 455 driver softirqs
12 148 1889 2089 2291 3 457 execdomains stat
1207 149 18967 2094 23 30 459 fb swaps
1218 15 1936 2098 2315 3001 463 filesystems sys
122 150 1937 21 2349 3045 465 fs sysrq-trigger
1223 1503 19382 2102 2354 3064 467 interrupts sysvipc
123 151 19483 2107 24 330 469 iomem thread-self
124 154 19484 2111 2431 331 471 ioports timer_list
1248 155 1954 2125 2449 383 604 irq tty
125 156 1957 2152 2455 3852 605 kallsyms uptime
1252 157 19600 2157 25 4 606 kcore version
126 158 1961 2158 251 405 613 keys version_signature
1264 159 1962 2160 25140 411 615 key-users vmallocinfo
127 16 1965 2164 252 414 7481 kmsg vmstat
128 160 19656 2176 258 415 7588 kpagecgroup zoneinfo
129 161 19673 2182 25822 417 7593 kpagecount
130 1613 19732 2189 25847 419 8 kpageflags

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

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU 3060 @ 2.40GHz
stepping : 6
microcode : 0xd0
cpu MHz : 1875.772
cache size : 4096 KB
.

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

$ cat /proc/meminfo
MemTotal: 4029884 kB
MemFree: 154800 kB
MemAvailable: 1490440 kB
Buffers: 93856 kB
Cached: 1568120 kB
SwapCached: 1748 kB
Active: 2288724 kB
Inactive: 1126348 kB
.

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

Для получения списка поддерживаемых файловых систем следует исследовать содержимое файла /proc/filesystems:

$ cat /proc/filesystems
nodev sysfs
nodev tmpfs
nodev bdev
nodev proc
nodev cgroup
nodev cgroup2
nodev cpuset
nodev devtmpfs
nodev configfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev ramfs
nodev hugetlbfs
nodev devpts
ext3
ext2
ext4
.

Теперь обратимся к директориям с информацией о процессах; к примеру, рассмотрим процесс init, который имеет идентификатор 1:

После этого перейдем в поддиректорию с именем 1 директории /proc и рассмотрим находящиеся в ней файлы. В директории находится большое количество файлов, имена большинства из которых говорят сами за себя:

$ cd /proc/1
$ ls
arch_status environ mountinfo personality statm
attr exe mounts projid_map status
autogroup fd mountstats root syscall
auxv fdinfo net sched task
cgroup gid_map ns schedstat timers
clear_refs io numa_maps sessionid timerslack_ns
cmdline limits oom_adj setgroups uid_map
comm loginuid oom_score smaps wchan
coredump_filter map_files oom_score_adj smaps_rollup
cpuset maps pagemap stack
cwd mem patch_state stat

Для исследования содержимого этих файлов следует запустить длительно работающий процесс. Вы можете открыть окно терминала и выполнить с помощью него команду tty для получения имени файла устройства терминала. После этого следует ввести команду cat и нажать клавишу Enter. Теперь данная команда будет ожидать вашего ввода:

После этого следует открыть второе окно терминала и найти идентификатор процесса cat с помощью команды pgrep:

Теперь исследуем первый относящийся к процессу файл с именем cmdline. Этот файл должен содержать параметры командной строки, переданные исполняемому файлу при запуске процесса:

$ cat /proc/20722/cmdline
cat

Далее обратимся к директории с именем cwd, которая является ссылкой (а точнее, символьной ссылкой) на директорию, в которой было инициировано исполнение утилиты cat; в моем случае это домашняя директория:

В процессе исполнения бинарного файла обычно осуществляется открытие нескольких файлов. В общем случае открываются файлы стандартного ввода (stdin), стандартного вывода (stdout) и стандартного вывода сообщений об ошибках (stderr). Если вы исследуете содержимое поддиректории fd директории нашего процесса в файловой системе /proc, вы обнаружите три символьных ссылки на файл устройства терминала, с помощью которого был инициирован запуск процесса:

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

Также важным файлом является файл, environ, содержащий информацию о переменных окружения процесса:

$ cat /proc/20722/environ
SHELL=/bin/bashSESSION_MANAGER=local/layla:@/tmp/.ICE-unix/2004,unix/layla:/tmp/.ICE-unix/2004COLORTERM=truecolor.

Важные файлы файловой системы proc

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

Важные файлы, относящиеся к процессам

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

Важные файлы, относящиеся к системе

А это список важных файлов, не относящихся к отдельным процессам:

Где найти дополнительную информацию?

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

Источник

Файловая система proc в Linux

Программы пространства пользователя в Linux не могут обращаться к ядру системы напрямую. Но для получения информации от ядра были созданы несколько специальных директорий с помощью которых любая программа или пользователь могут получить данные о состоянии компьютера и ядра. Это файловая система proc и sys.

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

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

Что такое proc?

Только папка proc linux содержит файлы нулевого размера. А также у каждого файла будет текущая дата создания. Например файл /proc/meminfo будет содержать разные данные при каждом открытии, поскольку использование памяти постоянно колеблется.

Структура файловой системы proc

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

/proc/buddyinfo

В этом файле хранится информация о фрагментации памяти в ядре Linux. Чаще всего используется для диагностики проблем с фрагментацией памяти. Если в двух словах, то строка означает зону памяти, а номер количество доступных страниц определенного уровня.

Node 0, zone DMA 0 0 0 1 2 0 1 0 1 1 3
Node 0, zone DMA32 421 164 73 49 71 17 53 44 33 7 89
Node 0, zone Normal 387 127 65 39 78 30 29 56 20 9 52

/proc/cgroups

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

/proc/cmdline

В этом файле вы найдете параметры, которые были указанны в строке запуска ядра загрузчиком Grub. Это может быть полезно при поиске и устранении проблем с загрузкой ядра или если необходимо выяснить какой точно файл был использован для загрузки.

BOOT_IMAGE=/vmlinuz-4.1.21-14-default root=UUID=0e87875d-beb3-4639-8df4-8a9de4100dda resume=/dev/disk/by-uuid/a390a040-5848-4838-a8c7-3ba001e29d89 splash=silent quiet showopts

/proc/config.gz

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

Для извлечения информации обычно используется утилита zcat поскольку данные сжаты по алгоритму gzip:

/proc/consoles

В этом файле хранятся зарегистрированные в ядре символические устройства для системной консоли /dev/console:

/proc/cpuinfo

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

processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 6
model name : AMD Athlon(tm) II X2 250 Processor
stepping : 3
microcode : 0x10000c8
cpu MHz : 3000.000
cache size : 1024 KB
physical id : 0
siblings : 2

/proc/crypto

Здесь перечислены все криптографические шифры, поддерживаемые ядром, а также дополнительная информация по каждому из них.

name : cbc(aes)
driver : cbc(aes-generic)
module : kernel
priority : 100
refcnt : 1
selftest : passed
internal : no
type : blkcipher
blocksize : 16
min keysize : 16
max keysize : 32
ivsize : 16
geniv :

/proc/devices

Здесь отображаются различные блочные и символические устройства подключенные к системе. Кроме тех, для которых не загружены модули ядра. Устройства разделены на символические и блочные. У символических устройств нет буфера и они отправляют ядру данные определенного размера. Блочные устройства имеют буфер для данных и предназначены для сохранения информации, например, на жесткие диски.

Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs

/proc/diskstats

Статистика ввода и вывода на блочные устройства, в том числе и жесткие диски.

8 0 sda 411 0 6808 1772 0 0 0 0 0 512 1772
8 1 sda1 102 0 1696 804 0 0 0 0 0 444 804
8 2 sda2 96 0 1648 488 0 0 0 0 0 344 488
8 3 sda3 122 0 1856 432 0 0 0 0 0 312 432

/proc/fb

В этом файле отображаются устройства фреймбуфера (экраны), а также используемые графические драйвера. Например:

Также здесь может быть указан драйвер Nvidia или catalyst если вы использовали проприетарный драйвер. Это один из способов посмотреть какой драйвер видеокарты используется.

/proc/filesystems

Здесь содержится список файловых систем, которые на данный момент поддерживаются ядром. Например:

nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
ext3
ext4

nodev значит, что это файловая система специального назначения и она не используется для хранения данных на носителях.

/proc/interrupts

CPU0 CPU1
0: 45 0 IO-APIC-edge timer
1: 0 2 IO-APIC-edge i8042
7: 2 0 IO-APIC-edge parport0
8: 0 1 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
12: 1 4 IO-APIC-edge i8042

/proc/iomem

В этом файле содержится текущая карта памяти для всех программ и ядра Linux. Эта информация может быть полезной программистам.

00000000-00000fff : reserved
00001000-0009ebff : System RAM
0009ec00-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c7fff : Video ROM
000d0000-000dffff : PCI Bus 0000:00
000e4000-000fffff : reserved
000f0000-000fffff : System ROM
00100000-cfe8ffff : System RAM
01000000-0166a9ea : Kernel code
0166a9eb-01f0f67f : Kernel data
0209e000-02219fff : Kernel bss

/proc/ioports

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

0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0061-0061 : PNP0800:00
0064-0064 : keyboard
0070-0071 : rtc0

/proc/kallsyms

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

/proc/kcore

/proc/kmsg

Вы, наверное, уже пользовались утилитой dmesg для просмотра сообщений ядра. Так вот, эти сообщения накапливаются и сохраняются в этом файле. Для доступа к нему тоже нужны права root.

/proc/kpagecount

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

/proc/loadavg

Здесь вы можете оценить среднюю нагрузку на систему. Например:

2.58 2.53 1.74 2/569 20842

/proc/locks

Здесь содержится список заблокированных ядром ресурсов. Может содержать много отладочной информации и не несет совсем никакой пользы для обычных пользователей:

1: POSIX ADVISORY WRITE 16342 08:16:43386485 1073741825 1073741825
2: POSIX ADVISORY READ 16342 08:16:43386485 1073741826 1073742335
3: POSIX ADVISORY READ 1686 08:16:43253829 124 124
4: POSIX ADVISORY WRITE 16342 08:16:43647306 0 EOF

/proc/meminfo

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

MemTotal: 6109848 kB
MemFree: 2044352 kB
MemAvailable: 2562056 kB
Buffers: 36872 kB
Cached: 742456 kB
SwapCached: 740888 kB
Active: 2187724 kB

/proc/misc

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

55 rfkill
200 tun
56 vboxnetctl
57 vboxdrvu
58 vboxdrv
232 kvm
59 memory_bandwidth

/proc/modules

Тоже довольно известный файл. Здесь содержится список всех загруженных модулей ядра. Ту же самую информацию мы можем увидеть выполнив lsmod. Но этой утилите тоже информацию предоставляет структура proc.

/proc/mounts

В этом файле перечислены все точки монтирования и все подключенные файловые системы:

sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,nosuid,size=3016160k,nr_inodes=754040,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0

/proc/partitions

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

major minor #blocks name

8 0 488386584 sda
8 1 62914560 sda1
8 2 148064256 sda2
8 3 277406720 sda3
8 16 976762584 sdb

/proc/stat

В этом файле содержится различная статистическая информация о системе. Такая, как частота процессора, количество тактов, количество сброшенных страниц памяти на диск, количество системных прерываний, время загрузки и т д.

/proc/swaps

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

/proc/sysrq-trigger

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

/proc/uptime

Здесь отображается сколько времени прошло после запуска компьютера. Первое число означает общее количество секунд после запуска компьютера, а второе время в режиме ожидания:

/proc/version

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

Linux version 4.1.21-14-default (geeko@buildhost) (gcc version 4.8.5 (SUSE Linux) ) #1 SMP PREEMPT Sun Apr 17 07:27:45 UTC 2016 (fc187c1)

/proc/vmstat

И снова информация об оперативной памяти. На этот раз информация о виртуальной памяти и ее использовании в системе.

/proc/zoneinfo

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

/proc/PID/

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

ttr cpuset fdinfo mountstats stat
auxv cwd loginuid oom_adj statm
clear_refs environ maps oom_score status
cmdline exe mem root task
coredump_filter fd mounts smaps wchan

Мы не будем рассматривать все, давайте рассмотрим только основные файлы:

С помощью этих файлов вы можете составлять различные скрипты. Например если вы хотите уничтожить все зомби процессы, то вы можете сканировать все директории на наличие Z в файле status. Так же само можно проверить запущена ли нужная вам программа просмотрев все cmdline.

/proc/sys/

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

Чтобы посмотреть можно ли записывать в файлы используйте команду:

Если у файла есть флаг W, значит в него можно записывать данные. Давайте рассмотрим основные подкаталоги в этой папке:

Это еще не все что можно сделать с помощью этого каталога подробнее настройка ядра linux будет рассмотрена в одной из следующих статей.

Выводы

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *