Немного об использовании /proc






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


/proc/[pid]

Внутри каталога /proc вы обнаружите множество каталогов, имена которых состоят из цифр. Имя каждого такого каталога соответствует PID (идентификатору процесса) работающего в системе процесса.

  • /proc/[pid]/cmdline. В этом файле хранится командная строка, которой был запущен данный процесс;
  • /proc/[pid]/cwd. Этот файл представляет собой символическую ссылку на текущий рабочий каталог процесса;
  • /proc/[pid]/exe представляет собой символическую ссылку на исполняемый файл, который инициировал запуск процесса;
  • /proc/[pid]/status содержит информацию о состоянии процесса, его имени, родительском процессе, а также различную статистическую информацию, например об используемой памяти.

/proc/cmdline

В этом файле содержатся все аргументы, переданные ядру в момент старта системы.

/proc/cpuinfo

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

/proc/filesystems

Этот файл содержит перечень всех поддерживаемых ядром типов файловых систем. Строки, начинающиеся с 'nodev', указывают на то, что ФС не является «физической». Например, такими системами являются сетевые  файловых системы, вроде NFS, или, например, псевдо-ФС, например /proc.

/proc/loadavg

Хранит информацию о загрузке системы. Первые три поля хранят ту же информацию, которую вы получаете о средней загрузке системы при помощи команды uptime.

Четвёртое поле состоит из двух значений, разделённых слэшем. Первая часть значения поля показывает количество выполняющихся в данный момент процессов/потоков. Это значение не может быть больше количества присутствующих в вашей системе CPU. Вторая часть поля отображает количество процессов присутствующих в системе.

Значение пятого поля содержит ID последнего запущенного в системе процесса. Обратите внимание, что если вы просматриваете содержимое /proc/loadavg при помощи, например, cat, то вы увидите значение PID именно программы cat.

/proc/meminfo

В этом файле хранится информация об использовании памяти системой. Именно отсюда программа free берёт информацию для вывода.

/proc/net

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

  • /proc/net/arp содержит ARP-таблицу;
  • /proc/net/dev для каждого сетевого интерфейса хранит статистические данные, такие как количество принятых/переданных пакетов, ошибок и т. п.;
  • /proc/net/route содержит таблицу маршрутизации в шестнадцатиричном виде;
  • /proc/net/wireless хранит статистические данные о работе беспроводных интерфейсов.

/proc/swaps

В этом файле вы найдёте информацию обо всех используемых в системе разделах/файлах подкачки, их приоритетах, объёме и используемом пространстве.

/proc/sys/kernel/hostname

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

/proc/sys/kernel/threads-max

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

/proc/sys/vm/swappiness

Как это уже освещалось в одной из статей, значение в этом файле регулирует поведение системы относительно частоты сброса данных из оперативной памяти в своп. Чем выше это значение — тем активнее система будет свопиться.

/proc/uptime

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

/proc/vmstat

Содержит информацию об использовании виртуальной памяти.

/proc/sys/net/ipv4/conf/default/forwarding

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

Источник petur.eu




Немного об использовании /proc: 4 комментария

  1. Спасибо, полезно.

    Хотя по этой теме ещё много чего наверное можно сказать — там, в /proc, есть ещё куча полезных файлов, о назначении которых, к сожалению, мало чего известно...

    Если интересна ядрёная часть — я по приколу писал интерпретатор брайнфака для ядра с интерфейсом как раз в procfs (github.com/sftp/kbrainfuck), и, хоть и не знаю многого, но некое представление у меня сложилось...

    Процент простоя машины можно узнать покороче :)

    echo 100/\(`cat /proc/uptime| sed «s/ /\//»`\) | bc -l

    И, в общем случае, результат дополнительно надо делить на число ЦПУ/ядер...

    1. Sergey, спасибо за подсказку.

      А что такое «интерпретатор брайнфака для ядра» и для чего он нужен?

  2. Brainfuck — это шуточный язык программирования, имеющий всего 8 операторов (ru.wikipedia.org/wiki/Brainfuck).

    «интерпретатор брайнфака для ядра» — это модуль ядра linux, который принимает на вход (через файл в procfs) программу на brainfuck'е, выдает на выходе (также через файл в procfs) результат её выполнения. Т.е. по сути это интерпретатор brainfuck'a.

    Зачем его интерпретировать (и тем более в ядре) — я и сам не знаю, just for fun :).

Комментарии запрещены.