ИМЯ
proc − псевдо-файловая система с информацией о процессах и системе
ОПИСАНИЕ
/proc - это псевдо-файловая система, которая используется в качестве интерфейса к структурам данных в ядре, чтобы избежать чтения и записи /dev/kmem. Большинство расположенных в ней файлов доступны только для чтения, но некоторые файлы позволяют изменять переменные ядра.
Ниже
дается
краткая
информация
по /proc.
[число]
Каждому
запущенному
процессу
соответствует
подкаталог
с именем,
соответствующим
идентификатору
этого
процесса
(его pid).
Каждый из
этих
подкаталогов
содержит
следующие
псевдо-файлы
и
каталоги.
cmdline
Этот файл содержит полную командную строку запуска процесса, кроме тех процессов, что полностью ушли в своппинг, а также тех, что превратились в зомби. В этих двух случаях в файле ничего нет, то есть чтение этого файла вернет 0 символов. Аргументы командной строки в этом файле указаны как список строк, каждая из которых завешается нулевым символом, с добавочным нулевым байтом после последней строки.
cwd |
Это ссылка на текущий рабочий каталог процесса. Чтобы найти рабочий каталог процесса с идентификатором 20, можно сделать следующее: |
cd /proc/20/cwd; /bin/pwd
Заметим, что команда pwd часто является встроенной в командный интерпретатор и может работать некорректно. В bash, вы можете использовать команду pwd -P.
environ
Этот файл содержит окружение процесса. Записи в файле разделяются нулевыми символами и в конце файла также может быть нулевой символ. Таким образом, чтобы вывести окружение процесса 1, вы должны сделать следующее:
(cat /proc/1/environ; echo) | tr "\000" "\n"
(Чтобы понять, зачем такое могло бы понадобиться, см. lilo(8).)
exe |
Под Linux 2.2 и 2.4 exe является символьной ссылкой, содержащей фактическое полное имя выполняемого файла. Символьная ссылка exe может использоваться обычным образом - при попытке открыть exe будет открыт исполняемый файл. Вы можете даже ввести /proc/[number]/exe чтобы запустить другую копию процесса такого же как и процесс с номером [число]. |
Под Linux 2.0 и в более ранних версиях exe является указателем на запущенный файл и является символьной ссылкой. Вызов readlink(2) на этот специальный файл exe под Linux 2.0 и более ранних версий возвращает строку формата:
[устройство]:индексный_дескриптор
Например, строка [0301]:1502 означает индексный дескриптор 1502 на устройстве со старшим номером устройства 03 (IDE, MFM и т. д.) и младшим номером устройства 01 (первый раздел на первом диске).
Для того, чтобы найти этот файл, может быть использована команда find(1) с опцией -inum.
fd |
Это подкаталог, содержащий одну запись на каждый файл, который в данный момент открыт процессом. Имя каждой такой записи соответствует номеру файлового дескриптора и является символьной ссылкой на реальный файл (как и в случае с exe). Так, 0 - это стандартный ввод, 1 - стандартный вывод, 2 - стандартный вывод ошибок и т. д. |
Программы, которые работают с файлом, но не работают со стандартным вводом и которые пишут в файл, и не пишут в стандартный вывод, можно обманывать с помощью этого подкаталога. Например, если флаг -i задает входной файл, а -o -- выходной файл, то можно сделать так:
foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
и у вас будет работающая программа-фильтр. Заметим, что это не будет работать с программами, которые используют seek при работе с файлами, так как вышеописанные файлы из каталога fd не позволяют использовать seek.
/proc/self/fd/N -- это приблизительно то же самое, что и /dev/fd/N в некоторых UNIX’ах и UNIX-подобных системах. Большинство сценариев MAKEDEV в Linux фактически делают символьные ссылки /dev/fd на /proc/self/fd.
maps |
Файл, содержащий адреса областей памяти, которые используются программой в данный момент и права доступа к ним. |
Формат файла следующий:
address perms offset dev inode pathname 08048000-08056000 r-xp 00000000 03:0c 64593 /usr/sbin/gpm 08056000-08058000 rw-p 0000d000 03:0c 64593 /usr/sbin/gpm 08058000-0805b000 rwxp 00000000 00:00 0 40000000-40013000 r-xp 00000000 03:0c 4165 /lib/ld-2.2.4.so 40013000-40015000 rw-p 00012000 03:0c 4165 /lib/ld-2.2.4.so 4001f000-40135000 r-xp 00000000 03:0c 45494 /lib/libc-2.2.4.so 40135000-4013e000 rw-p 00115000 03:0c 45494 /lib/libc-2.2.4.so 4013e000-40142000 rw-p 00000000 00:00 0 bffff000-c0000000 rwxp 00000000 00:00 0
где address -- это адресное пространство, занятое процессом, а perms -- права доступа к нему:
r =
можно
читать
w = можно
писать
x = можно
выполнять
s = можно
использовать
несколькими
процессами
совместно
p = личная
(копирование
при
записи)
offset -- это смещение в файле, dev -- это устройство (старший номер:младший номер), а inode -- это индексный дескриптор на данном устройстве. 0 означает, что с данной областью памяти не ассоциированы индексные дескрипторы: примером тому является сегмент bss.
Под Linux 2.0 поле, указывающее на имя файла отсутствует.
mem |
Через файл mem можно получить доступ к страницам памяти процесса, через вызовы open(2), read(2), и fseek(3). | ||
root |
Unix и Linux поддерживают идею о корневом каталоге файловой системы для процесса, который может быть установлен системным вызовом chroot(2). Root указывает на этот корень файловой системы, и ведет себя так же, как и exe, fd/* и т.д. | ||
stat |
Информация о статусе процесса. Она используется командой ps(1). Определяется в /usr/src/linux/fs/proc/array.c. |
Вот поля с соответствующими им спецификаторами форматов для scanf(3)попорядку:
pid %d |
Идентификатор процесса. |
comm %s
Имя исполняемого файла в круглых скобках. Его можно увидеть независимо от того, находится ли исполняемый файл в своппинге или нет.
state %c
Один из символов из строки "RSDZTW", где R -- запущен, S -- процесс "спит" в прерываемом ожидании, D -- процесс ожидает в непрерываемом состоянии окончания дисковой операции, Z -- процесс является зомби, или же T -- процесс трассируется или остановлен (по сигналу) и W -- процесс вызывается.
ppid %d
Идентификатор (PID) родительского процесса.
pgrp %d
Идентификатор группы процесса.
session %d
Идентификатор сессии процесса.
tty_nr %d
Терминал tty, который использует процесс.
tpgid %d
Идентификатор группы процесса, который в настоящий момент владеет терминалом tty, к которому подключен данный процесс.
flags %lu
Флаги процесса. Матеметический бит -- десятичное 4, бит трассировки -- десятичное 10.
minflt %lu
Количество незначительных сбоев, которые возникли при работе процесса, и которые не требуют загрузки страницы памяти с диска.
cminflt %lu
Количество незначительных сбоев, которые возникли при ожидании окончания работы процессов-потомков.
majflt %lu
Количество значительных сбоев, которые возникли при работе процесса, и которые потребовали загрузки страницы памяти с диска.
cmajflt %lu
Количество значительных сбоев, которые возникли при ожидании окончания работы процессов-потомков.
utime %lu
Количество мигов (jiffies), которые данный процесс провел в режиме пользователя.
stime %lu
Количество мигов, которые данный процесс провел в режиме ядра.
cutime %ld
Количество мигов, которые данный процесс и его потомки провели в режиме пользователя. (См. также times(2).)
cstime %ld
Количество мигов, которые процесс ожадающий завершения процессов-потомков провёл в режиме ядра.
priority %ld
Стандартная величина приоритета (для nice) плюс 15. Данное значение в ядре никогда не бывает отрицательным.
nice %ld
Значение для nice в диапазоне от 19 (наиболее низкий приоритет) до -19 (наивысший приоритет).
0 %ld |
Данное значение жёстко установлено в 0 как значение для удалённого поля. |
itrealvalue %ld
Время (в мигах) перед следующей посылкой процессу SIGALRM из-за внутреннего таймера.
starttime %lu
Время (в мигах) запуска процесса после начальной загрузки системы.
vsize %lu
Размер виртуальной памяти в байтах.
rss %ld
Резидентный Размер: количество страниц, которые занимает процесс в реальной памяти, минус 3 для административных целей. Это те страницы, которые заняты кодом, данными и пространством стека. Сюда не включаются страницы, которые не были загружены по требованию или которые находятся в своппинге.
rlim %lu
Текущий лимит в байтах на резидентный размер процесса (обычно 4294967295 на i386).
startcode %lu
Адрес, выше которого может выполняться код программы.
endcode %lu
Адрес, ниже которого может выполняться код программ.
startstack %lu
Адрес начала стека.
kstkesp %lu
Текущее значение esp (указателя стека) для данного процесса, которое следует из страницы стека в ядре .
kstkeip %lu
Текущее значение EIP (указатель инструкций).
signal %lu
Карта ожидающих сигналов (обычно 0).
blocked %lu
Карта блокированных сигналов (обычно 0, или 2 для командных интерпретаторов).
sigignore %lu
Карта игнорируемых сигналов.
sigcatch %lu
Карта перехваченных сигналов.
wchan %lu
Это "канал", в котором ожидает процесс. Он является адресом системного вызова и может быть найден в списке имен, если вам нужно текстовое имя. (Если у вас свежий /etc/psdatabase, то попробуйте выполнить ps l, чтобы увидеть поле WCHAN в действии).
nswap %lu
Количество страниц на своппинге - не обслуживается.
cnswap %lu
Суммарное nswap для процессов-потомков.
exit_signal %d
Сигнал, который будет послан родителю, когда процесс умрёт.
processor %d
Номер процессора, на котором последний раз выполнялся процесс.
statm |
Предоставляет информацию о состоянии памяти в страницах, как единицах измерения. Вот комментарии по колонкам в файле: |
size
общий
размер
программы
resident размер
резидентной
части
share
разделяемые
страницы
trs текст
(код)
drs
данные/стек
lrs
библиотека
dt "дикие" (dirty)
страницы
status |
Предоставляет бОльщую часть информации из stat и statm в более лёгком для прочтения формате. | ||
apm |
Версия системы расширенного управления питанием и информация о батареях, если ядро собрано с поддержкой CONFIG_APM.
bus |
Содержит подкаталоги для установленых шин. |
pccard
Подкаталог для pcmcia устройств, если ядро собрано с поддержкой CONFIG_PCMCIA. |
drivers
pci |
Содержит различные подкаталоги шины и псевдо-файлы, содержащие информацию о шинах pci, установленных устройствах и драйверах устройств. Некоторые из этих файлов не являются текстовыми. |
devices
Информация о pci устройствах. К ним можно получить доступ через lspci(8) и setpci(8).
cmdline
Аргументы, переданные ядру Linux во время начальной загрузки. Часто это делается через менеджер начальной загрузки, такой как lilo(1).
cpuinfo
Это коллекция элементов, зависящих от процессора и системной архитектуры; для каждой поддерживаемой архитектуры список различен. Имеются только две общих записи, которые предоставляют номер процессора и BogoMIPS -- это системная константа, которая высчитывается во время инициализации ядра. Для SMP (многопроцессорных) машин информация предоставляется по каждому процессору.
devices
Текстовый список старших (major) номеров устройств и групп устройств. Он может быть использован скриптами MAKEDEV для того, чтобы создать устройства, соответствующие тем, которые поддерживает ядро.
dma |
Список зарегистрированных каналов ISA DMA (прямого доступа в память), которые используются в данный момент. | ||
driver |
Пустой подкаталог. |
execdomains
Список выполнимых доменов (индивидуально для ABI).
fb |
Информация о frame buffer, если ядро собрано с поддержкой CONFIG_FB. |
filesystems
Текстовый список файловых систем, поддержка которых вкомпилирована в ядро. Обычно используется программой mount(1) для поиска нужной файловой системы, если она не указана при монтировании.
fs |
Пустой подкаталог. | ||
ide |
Подкаталог ide существует в системах с шиной ide. Это каталоги для каждого для каждого канала ide и подключенных устройств. Файлы включают: |
cache
размер
буфера в KB
capacity
количество
секторов
driver версия
драйвера
geometry
физическая
и
логическая
геометрия
identify в
шестнадцатеричном
виде
media тип
носителя
model номер
модели
производителя
settings
настройки
драйвера
smart_thresholds в
шестнадцатеричном
виде
smart_values в
шестнадцатеричном
виде
Утилита hdparm(8) предоставляет доступ к этой информации в дружественном формате.
interrupts
Используется для записи количества прерываний, соответствующих каждому IRQ. Используется (по крайней мере) на архитектуре i386. Очень легко прочитать, так как записи в ASCII.
iomem |
Карта памяти ввода/вывода в Linux 2.4. |
ioports
Список зарегистрированных диапазонов портов ввода-вывода, которые используются в данный момент.
kcore |
Этот файл отображает физическую память системы и записывается в ELF формате файла core. С помощью этого псевдо-файла и ядра, из которого не убраны таблицы символов (/usr/src/linux/vmlinux), можно использовать GDB для проверки текущего состояния любых структур ядра. |
Полная длина этого файла - это размер физической памяти (RAM) плюс 4KB.
kmsg |
Этот файл может быть использован вместо системного вызова syslog(2) для чтения сообщений ядра. Процесс должен иметь привилегии суперпользователя, чтобы читать этот файл, причем делать это может только один процесс. Данный файл невозможно прочесть, если запущен процесс syslog, который использует системный вызов syslog(2) для протоколирования сообщений ядра. |
Информация из этого файла извлекается с помощью программы dmesg(8).
ksyms |
Файл содержит определения символов, экспортируемых ядром, которые используются инструментами modules(X) для динамического связывания загрузочных модулей. |
loadavg
Параметры средней загрузки, которые предоставляют количество заданий в очереди выполнения в среднем за 1, 5 и 15 минут. Это то же самое, что и средняя загрузка, которую выдает программа uptime(1) и другие.
locks |
Этот файл показывает файловые блокировки, установленные в текущий момент вызовами (flock(2) и fcntl(2)) и параметры (fcntl(2)). | ||
malloc |
Данный файл существует только если ядро собрано с поддержкой CONFIGDEBUGMALLOC. |
meminfo
Этот файл используется программой free(1) для формирования отчета о свободной и используемой памяти (как физической, так и виртуальной, в своп-файле), а также разделяемой памяти и памяти под буферы, которую использует ядро.
Данные в том же формате, который выдает команда free(1), за исключением того, что цифры даются в байтах, а не килобайтах.
mounts |
Это список всех файловых систем, которые примонтированы в настоящий момент. Формат этого файла описан в fstab(5). |
modules
Текстовый список модулей, которые были загружены системой. Смотри также lsmod(8).
mtrr |
Memory Type Range Registers. Подробности смотри в /usr/src/linux/Documentation/mtrr.txt . | ||
net |
разные псевдо-файлы, содержащие информацию по какой-либо части сетевой подсистемы. Они содержат структуры в ASCII и прекрасно читаются утилитой cat. Однако, стандартная утилита netstat(8) предоставляет более чистый доступ к этим файлам. |
arp
Файл содержит читабельный ASCII-дамп ARP таблицы ядра, которая используется для определения адресов. Она покажет как полученные динамически, так и заданные явно записи ARP. Формат файла такой: |
IP address HW type Flags HW address Mask Device 192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0 192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0
Здесь ’IP address’ это адрес машины в нотации IPv4, ’HW type’ - это тип аппаратного обеспечения для этого адреса согласно RFC 826. Flags - это внутренние флаги структуры ARP (определенные в /usr/include/linux/if_arp.h), а ’HW address’ -- это физическое отображение IP-адреса, если оно известно.
dev |
Псевдо-файл dev содержит информацию о состоянии сетевых устройств. Она представляет собой количество принятых и отправленных пакетов, количество ошибок и коллизий, и другую базовую статистику. Эта информация используется программой ifconfig(8) для вывода отчета о состоянии устройства. Формат информации такой: |
Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0 eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0 ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0 tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
dev_mcast
Определено в /usr/src/linux/net/core/dev_mcast.c:
indx ifterface_name dmi_u dmi_g
dmi_address
2 eth0 1 0 01005e000001
3 eth1 1 0 01005e000001
4 eth2 1 0 01005e000001
igmp |
Internet Group Management Protocol (Протокол Управления Интернет-Группами). Определён в /usr/src/linux/net/core/igmp.c. | ||
rarp |
Данный файл использует тот же формат, что и файл arp и содержит текущую реверсную базу данных адресов ARP, используемую при работе rarp(8) служб поиска обратных адресов. Если поддержки RARP нет в ядре, то этот файл не существует. | ||
raw |
Содержит дамп таблицы беспротокольных (RAW) сокетов. Большая часть этой информации не используется ни для чего, кроме отладки. Значение ’sl’ это хешируемый слот ядра для сокета, ’local address’ -- это пара (локальный адрес, номер протокола). ’St’ -- это внутреннее состояние сокета. ’tx_queue’ и памяти ядра. Поля ’tr’, ’tm->when’ и ’rexmits’ не используются RAW. Поле uid содержит euid (эффективный идентификатор пользователя) создателя данного сокета. | ||
snmp |
Этот файл содержит ASCII данные, необходимые для управления IP, ICMP, TCP и UDP для SNMP-агента. | ||
tcp |
Содержит дамп таблицы TCP-сокетов. Большая часть этой информации не используется ни для чего, кроме отладки. Значение ’sl’ это хешируемый слот ядра для сокета, ’local address’ - это пара (локальный адрес, номер порта). соединение). ’St’ - это внутреннее состояние сокета. ’tx_queue’ и ’rx_queue’ это исходящая и входящая очереди данных в терминах использования памяти ядра. Поля ’tr’, ’tm->when’ и ’rexmits’ содержат внутреннюю информацию ядра о состоянии сокета и полезны только для отладки. Поле uid содержит euid (эффективный идентификатор пользователя) создателя данного сокета. | ||
udp |
Содержит дамп таблицы UDP-сокетов. Большая часть этой информации не используется ни для чего, кроме отладки. Значение ’sl’ -- это хешируемый слот ядра для сокета, ’local address’ - это пара (локальный адрес, номер порта). соединение). ’St’ - это внутреннее состояние сокета. ’tx_queue’ и памяти ядра. Поля ’tr’, ’tm->when’ и ’rexmits’ не используются UDP. Поле uid содержит euid (эффективный идентификатор пользователя) создателя данного сокета. Формат такой: |
sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
unix |
Показывает список доменных сокетов UNIX, присутствующих в системе, а также их состояния. Формат такой: |
Num RefCount Protocol Flags Type St Path 0: 00000002 00000000 00000000 0001 03 1: 00000001 00000000 00010000 0001 01 /dev/printer
Где ’Num’ - это номер слота в таблице, ’RefCount’ -- количество пользователей данного сокета, ’Protocol’ в настоящий момент всегда 0, сокета. ’Type’ в настоящий момент всегда ’1’ (датаграммы доменных сокетов Unix ядром пока не поддерживаются). ’St’ - это внутреннее состояние сокета, а ’Path’ - это путь привязки (если он есть) данного сокета.
partitions
Содержит старшие (major) и младшие (minor) номер каждого раздела, а также количество блоков (размер раздела) и имя раздела.
pci |
Это список всех PCI-устройств, найденных во время инициализации ядра, а также их конфигурация. | ||
scsi |
Каталог с псевдо-файлами для получения информации о scsi-адаптерах, а также разные каталоги низкоуровневых драйверов SCSI, которые содержат по одному файлу на каждый SCSI-адаптер в системе, и которые представляют некоторую информацию о части подсистемы ввода/вывода SCSI. Данные файлы содержат ASCII структуры и прекрасно читаются утилитой cat. |
Вы также можете писать в некоторые из этих файлов для перенастройки подсистемы или включения/выключения некоторых возможностей.
scsi |
Это список всех SCSI-устройств, которые известны ядру. Список похож на тот, что выдается при начальной загрузке. scsi в настоящий момент поддерживает только команду add-single-device, которая позволяет суперпользователю добавлять устройства на ходу, без выключения машины. |
Например, команда echo ’scsi add-single-device 1 0 5 0’ > /proc/scsi/scsi заставит адаптер scsi1 просканировать SCSI канал 0, чтобы найти устройство с ID 5 и LUN 0. Если по этому адресу уже есть известное устройство или если заданный адрес неправилен, то будет возвращена ошибка.
drivername
drivername в настоящий момент может быть: NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore или wd7000.
Эти каталоги показывают все драйверы, который зарегистрированы хотя бы одним SCSI HBA. Каждый каталог содержит по одному файлу на каждый зарегистрированный адаптер. Имя каждого адаптера соответствует номеру, который был получен этим адаптером во время инициализации.
Чтение данных файлов обычно показывает информацию о конфигурации драйвера и адаптера, статистическую информацию и т. д.
Записывая в эти файлы, можно добиться различных результатов от разных адаптеров. Например, командами latency и nolatency суперпользователь может включить и выключить код вычисления latency команд в драйвере eata_dma. Командами lockup и unlock суперпользователь может управлять блокировками шины, которые симулирует драйвер scsi_debug.
self |
Этот каталог указывает на процесс, обращающийся к файловой системе /proc, и идентичен подкаталогу, соответствующему номеру этого процесса. |
slabinfo
Информация
о кэшах
ядра.
Колонки
имеют вид:
cache-name
num-active-objs
total-objs
object-size
num-active-slabs
total-slabs
num-pages-per-slab
Подробности
смотри в
slabinfo(5).
stat |
статистика ядра/системы. Различается для разных архитектур. Общие записи включают: |
cpu 3357 0 4313 1362393
Количество мигов (jiffies) (сотых секунды), которые система проводит, соответственно, в режиме пользователя, режиме пользователя с низким приоритетом (nice), режиме системы и в режиме простаивающих задач. Последнее значение должно быть в 100 раз больше второго значения из псевдо-файла uptime
page 5741 1808
Количество страниц, которые система загрузила с диска и выгрузила на диск.
swap 1 0
Количество страниц своппинга, которые загружены и выгружены.
intr 1462898
Количество прерываний, случившихся с момента загрузки системы.
disk_io: (2,0):(31,30,5764,1,2) (3,0):...
(major,minor):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
ctxt 115315
Количество переключений контекста, произошедших в системе.
btime 769041601
Время начальной загрузки, в секундах после 1 января 1970 г.
processes 86031
Количество разветвлений (вызовов fork) с момента начальной загрузки.
swaps |
Используемые области своппинга (виртуальной памяти на жёстком диске -- прим. пер.). См. также swapon(8). | ||
sys |
Этот каталог (присутствующий, начиная с 1.3.57) содержит несколько файлов и подкаталогов, которые соответствуют переменным ядра. Эти переменные могут быть прочитаны и иногда изменены с использованием файловой системы proc, а также с помощью системного вызова sysctl(2). На сегодняшний момент имеются каталоги abi, debug, dev, fs, kernel, net, proc, rxrpc, sunrpc и vm каждый из которых содержит много файлов и подкаталогов. |
abi
Этот каталог может содержать файлы с двоичной информацией приложений. В некоторых системах этого каталога нет. | |||
debug |
Данный каталог может быть пуст. | ||
dev |
Данный каталог содержит информацию, специфичную для устройств (например dev/cdrom/info). В некоторых системах он может быть пуст. | ||
fs |
Этот каталог содержит подкаталог binfmt_misc и файлы dentry-state, dir-notify-enable, dquot-nr, file-max, file-nr, inode-max, inode-nr, inode-state, lease-break-time, leases-enable, overflowgid, overflowuid super-max и super-nr которые выполняю функции, соответствующие их названиям. |
Документацию по файлам в /proc/sys/binfmt_misc можно найти в исходных текстах ядра в Documentation/binfmt_misc.txt.
Файл dentry-state содержит шесть чисел, nr_dentry, nr_unused, age_limit (возраст в секундах), want_pages (страниц, запрошенных системой) и два пустых значения. nr_dentry всегда показывает 0. nr_unused показывает количество неиспользованных dentries. age_limit -- это возраст в секундах по истечении которого dcache entries могут быть отозваны, когда памяти становится мало и значение want_pages не ноль, когда ядро делает вызов shrink_dcache_pages() и кэш dcache пока не подрезан.
Файл dir-notify-enable может быть использован, чтобы запретить или разрешить интерфейс dnotify описанный в fcntl(2) на общесистемной основе. Значение 0 в этом файле запрещает интерфейс, а значение 1 разрешает его.
Файл dquot-max показывает максимальное количество кэшируемых записей дисковых квот. В некоторых (2.4) системах, его нет. Если число свободных кэшируемых дисковых квот является очень маленьким, а у вас в системе одновременно работает большое количество пользователей, то вам, возможно, захочется увеличить этот лимит.
Файл dquot-nr показывает количество выделенных в использование записей дисковых квот и количество свободных записей дисковых квот.
Файл file-max показывает системный лимит на количество открытых файлов для всех процессов. (См. также вызов setrlimit(2), который можно использовать, чтобы установить ограничение RLIMIT_NOFILE, на количество открытых файлов файлов на процесс). Если вы получяете большое количество сообщений о невозможности открыть файловые дескрипторы, попытайтесь увеличить это значение:
echo 100000 > /proc/sys/fs/file-max
Константа ядра NR_OPEN устанавливает верхний лимит значения, которое может быть установлено в file-max.
Если вы увеличиваете file-max, то позаботьтесь увеличить inode-max , установив его в 3-4 раза больше, чем новое значение file-max, в противном случае вам может не хватить индексных дескрипторов.
Доступный только для чтения файл file-nr показывает количество открытых файлов. Он содержит три числа: Количество выделенных индексных дескрипторов, количество свободных файловых дескрипторов и максимальное количество файловых дескрипторов. Ядро выделяет файловые дескрипторы динамически, но оно не освобождает их сразу же. Если количество выделенных файлов становится больше максимального, то вам необходимо увеличить максимальное. Когда количество свободных файловых дескрипторов велико и у вас не бывает неожиданных пиков использования файловых дескрипторов, вам наверняка не понадобится увеличивать максимальное значение.
Файл inode-max содержит максимальное количество индексных дескрипторов, находящихся в памяти. В некоторых (2.4) системах, его может не быть. Это количество должно быть в 3-4 раза больше, чем максимальное значение в файле file-max, так как стандартному вводу (stdin), стандартному выводу (stdout) и сетевым сокетам также необходимы индексные дескрипторы. Если вам регулярно не хватает индексных декскрипторов, то вам необходимо увеличить это значение.
Файл inode-nr содержит первые два значения из inode-state.
Файл inode-state содержит семь значений: nr_inodes, nr_free_inodes, preshrink и четыре пустых. nr_inodes -- это количество индексных дескрипторов, выделенных для использования системой. Оно может быть несколько больше, чем inode-max, потому что Linux выделяет их по полной странице за раз. nr_free_inodes представляет количество свободных индексных дескрипторов. preshrink будет ненулевым, когда nr_inodes > inode-max и системе понадобится подрезать список индексных дескрипторов, вместо выделения новых.
Файл lease-break-time задаёт период, в течении которого, ядро предоставляет процессу возможность удерживать файл, занятый через вызов (fcntl(2)) после вызова, оно посылает сигнал процессу, извещая его о том, что другой процесс ожидает открытия этого файла. Если удерживающий файл процесс не удалит или не отменит удержание файла в течении указанного периода, то ядро принудительно снимет удержание.
Файл leases-enable можно использовать, чтобы разрешить или запретить в системе возможность удержания файла через (fcntl(2)). Если файл содержит 0, удержание запрещено. Если не ноль - разрешено.
Файлы overflowgid и overflowuid позволяют вам изменить значение фиксированных UID и GID. По умолчанию оно равно 65534. Некоторые файловые системы поддерживают только 16-битные UID и GID, в то время как в Linux UID и GID являются 32-битными. Когда монтируется одна из таких файловых систем с правами, позволяющими запись, все UID или GID, которые превышают 65535 транслируются перед записью на диск в переполненные значения.
Файл super-max управляет максимальным значением суперблоков и таким образом максимальным значением файловых систем, которые может смонтировать ядро. Вам необходимо увеличить super-max только в том случае, если вам нужно смонтировать больше файловых систем, чем это позволяет значение в файле super-max. Файл super-nr содержит количество файловых систем, которые смонтированы в данный момент.
kernel |
Этот каталог содержит файлы acct, cad_pid, cap-bound, core_pattern, core_uses_pid, ctrl-alt-del, dentry-state, domainname, hotplug, hostname, htab-reclaim (только для PowerPC), java-appletviewer (binfmt_java, устарел), java-interpreter (binfmt_java, устарел), l2cr (только для PowerPC), modprobe, msgmax, msgmnb, msgmni, osrelease, ostype, overflowgid, overflowuid, panic, panic_on_oops, pid_max, powersave-nap (только для PowerPC), printk, random, real-root-dev, reboot-cmd (только для SPARC), rtsig-max, rtsig-nr, sem, sg-big-buff, shmall, shmmax, shmmni, sysrq, tainted, threads-max, version и zero-paged (только для PowerPC) функции которых соответствует их именам. |
Файл acct содержит три числа: highwater, lowwater и frequency. Если разрешён учёт процессов в стиле BSD, то эти значения управляют его поведением. Если свободного места на файловой системе, куда осуществляется протоколирование учёта становится меньше, чем lowwater%, то учёт процессов приостанавливается. Если свободного места становится больше, чем highwater%, то учёт процессов возобновляется. Значение frequency определяет как часто ядро проверяет свободное место (в секундах). По умолчанию значения соответственно составляют 4, 2 и 30. Таким образом, приостановка учёта осуществляется если свободно менее 2% места на диске; возобновление если места >=4%; информация о свободном месте обновляется каждые 30 секунд.
Файл cap-bound содержит набор значений ядра capability bounding set (выражаемый как десятичные числа со знаком). Этот набор является битовой маской возможностей, предоставляемых процессу во время exec, которая накладывается посредством битового умножения (AND).
Файл core_pattern (новое в Linux 2.5) предоставляет улучшеный контроль над формой имени файла core, что заменяет устаревший файл core_uses_pid, описываемый ниже. Имя файла core управляется определением шаблона в core_pattern. Шаблон может содержать символ %, который определяет какая из следующих подстановок будет применена при создании файла core:
%%
Один
символ %
%p PID
процесса,
для
которого
создаётся
файл дамп
%u реальный
UID
процесса,
для
которого
создаётся
дамп
%g реальный
GID
процесса,
для
которого
создаётся
дамп
%s номер
сигнала,
вызывашего
дамп
%t время
создания
дампа
(секунды
прошедшие
с 0:00h, 1 Jan 1970)
%h имя
машины
(тоже, что и
’nodename’
возвращаемое
вызовом
uname(2))
%e имя
программы
Одиночный символ % в конце шаблона отбрасывается из имени файла core, как и комбинация из следующих за ним символов, если она не соответствует одной из указанных выше комбинаций. Все другие символы в шаблоне становятся литеральной частью имени файла core. Максимальный размер получившегося имени файла core не может превышать 64 байт. По умолчанию - это имя "core". Для обратной совместимости, если core_pattern не включает "%p" и core_uses_pid отличен от нуля, то к имени файла core будет добавлена подстрока .PID.
Файл core_uses_pid может быть использован для управления именем файла core в Linux 2.4. Если данный файл содержит значение 0, то файл core называется просто core. Если данный файл содержит ненулевое значение, то имя файла core включает в себя идентификатор процесса в виде core.PID.
Файл ctrl-alt-del управляет обработкой нажатия клавиш Ctrl-Alt-Del. Когда значение в этом файле 0, Ctrl-Alt-Del обрабатывается и производит вызов программы init(1) для выполнения перезапуска системы. Когда значение в файле > 0, реакция Linux соответствует Vulcan Nerve Pinch (tm), согласно которому произойдёт немедленная перезагрузка, даже без синхронизации буферов дисков. Замечание: когда какая-либо программа (типа dosemu) получает клавиатуру в ’raw’ режиме, нажатие ctrl-alt-del интерпретируется этой программой, перед тем как оно достигнет уровня обработки tty ядром, и таким образом, именно эта программа будет решать, что с этим делать.
Файл hotplug содержит путь для агента политики устройств, подключаемых в "горячем" режиме. По умолчанию это файл "/sbin/hotplug".
Файлы domainname и hostname могут быть использованы для установки имени домена службы NIS/YP и имени узла для вашей машины точно таким же образом как и командами domainname и hostname, т.е. команды:
# echo
"darkstar" > /proc/sys/kernel/hostname
# echo "mydomain" >
/proc/sys/kernel/domainname
имеют тот же эффект, что и команды
# hostname
"darkstar"
# domainname "mydomain"
Заметим, однако, что классический darkstar.frop.org имеет имя узла "darkstar" и доменное имя DNS (Сервера Доменных Имен) "frop.org", не путайте с доменным именем NIS (Службы Сетевой Информации) или как она раньше называлась YP (Yellow Pages). Эти два доменных имени полностью различны по своей сути. Подробности об это можно найти на странице руководства hostname(1).
Если файл htab-reclaim (только для PowerPC) установлен в ненулевое значение, то PowerPC htab (см. файл Documentation/powerpc/ppc_htab.txt в исходных текстах ядра) подрезается каждый раз, когда система входит в цикл простоя.
Файл l2cr (только для PowerPC) содержит файл, который управляет L2 кэшем на процессорных платах G3. Если 0, кэш запрещён. Если не ноль - разрешён.
Файл modprobe описывается в файле исходных текстов ядра Documentation/kmod.txt.
Файл msgmax это системный лимит, задающий максимальное число байт в одном сообщении, которое пишется в очередь сообщений System V.
Файл msgmni задаёт системный лимит на количество идентификаторов в очереди сообщений. (Файл есть только в Linux 2.4 и выше.)
Файл msgmnb это системный параметр, используемый для инициализации установки msg_qbytes для последовательно создаваемых очередей сообщений. Установка msg_qbytes задаёт максимальное число байт, которые могут быть записаны в очередь сообщений.
Файлы ostype и osrelease содержат подстроки из /proc/version.
Файлы overflowgid и overflowuid дублируют файлы /proc/sys/fs/overflowgid и /proc/sys/fs/overflowuid.
Файл panic предоставляет доступ на чтение и запись к переменной ядра panic_timeout. Если в файле ноль, ядро будет зацикливаться при крахе системы по panic; если не ноль, то это означает, что ядро должно выполнить автоматическую перезагрузку после этого количества секунд. Когда вы используете программный драйвер устройства watchdog (устройство, периодически делающее проверку, что система функционирует), то рекомендуется установить значение 60.
Файл panic_on_oops (новое в Linux 2.5) уравляет поведением ядра, когда случается oops или BUG. Если файл содержит 0, то система пытается продолжить работу. Если содержит 1, то система выполняет задержку на несколько секунд (чтобы дать время klogd записать вывод oops) и затем генерирует крах системы через panic. Если файл panic также содержит ненулевое знаечение, то машина будет перезагружена.
Файл pid_max (новое в Linux 2.5) задаёт значение, в пределах которого находятся все идентификаторы процессов (PID)) (т.е. значение в этом файле на единицу больше, чем максимальный PID). По умолчанию, значение в этом файле составляет 32768, т.е. означает тот же самый диапазон PID’ов, что и в ранних ядрах. Значение в этом файле может быть установлено до 2^22 (значения PID_MAX_LIMIT, которое приблизительно составляет 4 миллиона).
Файл powersave-nap (только для PowerPC) содержит флаг. Если он установлен Linux-PPC будет использовать ’nap’ режим сберегания питания, в противном случае, будет использоваться режим ’doze’.
Четыре значения в файле printk это console_loglevel, default_message_loglevel, minimum_console_level и default_console_loglevel. Данные значения влияют на поведение printk() при выдаче или протоколировании сообщений об ошибках. Подробности о различных уровнях протоколирования см. в syslog(2). Сообщения с более высоким приоритетом, чем console_loglevel будут выданы на консоль. Сообщения без явно заданного приоритета будут выданы с приоритетом default_message_level. minimum_console_loglevel - это минимальное (наивысшее) значение, в которое может быть установлено значение console_loglevel. default_console_loglevel - это значение по умолчанию для console_loglevel.
Каталог random содержит различные параметры, управляющие работой файла /dev/random.
Файл real-root-dev описывается в файле исходных текстов ядра Documentation/initrd.txt.
Файл reboot-cmd (только для Sparc) является способом задания аргументов для начального загрузчика SPARC ROM/Flash. Способ сказать ему, что делать после перезагрузки?
Файл rtsig-max может быть использован для настройки максимального количества сигналов реального времени POSIX (в очереди), которое может воспринять система.
Файл rtsig-nr показывает количество сигналов реального времени POSIX, которые в настоящий момент находятся в очереди.
Файл sem (доступен в Linux 2.4 и выше) содержит 4 значения, описывающих ограничения семафоров по стандарту System V. Вот эти значения по порядку:
SEMMSL |
Максимальное количество семафоров в одном списке семафоров. | ||
SEMMNS |
Системный лимит на количество семафоров во всех списках семафоров. | ||
SEMOPM |
Максимальное количество операций, которое может быть указано в вызове semop(2). | ||
SEMMNI |
Системный лимит на максимальное количество идентификаторов семафоров. |
Файл sg-big-buff показывает размер буфера стандартного SCSI устройства (sg). Вы не можете пока настраивать его, но его можно изменить при компиляции ядра, исправив файл include/scsi/sg.h, изменив в нём значение SG_BIG_BUFF. Однако, в этом как правило нет необходимости.
Файл shmall содержит системный лимит на общее количество страниц разделяемой по стандарту System V сегментов памяти.
Файл shmmax может быть использован для опроса и установки ограничения на динамическое создание разделяемых по стандарту System V сегментов памяти. В настоящий момент, ядро поддерживает сегменты разделяемой памяти до 1Gb. Это значение по умолчанию для SHMMAX.
Файл shmmni (доступен в Linux 2.4 и выше) задаёт максимальный системный лимит на создание разделяемых по стандарту System V сегментов памяти.
Файл version содержит строку вида:
#5 Wed Feb 25 21:49:24 MET 1998.TP
Где ’#5’ означает, что пятую сборку ядра из исходных текстов, а дата после этого показывает время сборки ядра.
Файл zero-paged (только для PowerPC) содержит флаг. Когда он разрешён (не ноль), Linux-PPC будет размещать пре-нулевые страницы в цикле простоя, что возможно увеличит скорость выполнения get_free_pages.
net |
Данный каталог содержит некоторую информацию по функционированию сетевой подсистемы. | ||
proc |
Данный каталог может быть пуст. | ||
sunrpc |
Данный каталог поддерживает удалённый вызов процедур Sun для сетевой файловой системы (NFS). В некоторых системах его нет. | ||
vm |
Этот каталог содержит файлы для тонкой настройки управления памятью, буферами и кэшем. |
sysvipc
Подкаталог содержит псевдо-файлы msg, sem и shm. Эти файлы показывают объекты межпроцессного взаимодействия (System V Interprocess Communication (IPC)) (соответственно: очереди сообщений, семафоры и разделяемую память) который существуют в системе в настоящий момент. Похожая информация предоставляется через ipcs(1). Эти файлы имеют заголовки и форматируются (по одному IPC объекту на строку) для более лёгкого понимания. ipc(5) представляет подготовительный материал по информации, которую показывают эти файлы.
tty |
Подкаталог, содержащий псевдо-файлы и подкаталоги для драйверов терминальных устройств tty и порядок выделения устройств. | ||
uptime |
Этот файл содержит два числа: время работы системы с момента загрузки (в секундах) и общее время, которое система провела в состоянии простоя (в секундах). |
version
Строка, идентифицирующая версию ядра, которое запущено в данный момент. Она включает содержимое /proc/sys/ostype, /proc/sys/osrelease и /proc/sys/version. Например:
Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
СМОТРИ ТАКЖЕ
cat(1), find(1), free(1), mount(1), ps(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), hier(7), arp(8), dmesg(8), hdparm(8), ifconfig(8), lsmod(8), lspci(8), netstat(8), procinfo(8), route(8) /usr/src/linux/Documentation/filesystems/proc.txt
СООТВЕТСТВИЕ СТАНДАРТАМ
Приблизительно соответствует ядру Linux 2.4.17. Пожалуйста обновляйте по мере необходимости.
Последнее обновление было для Linux 2.4.17.
ПРЕДОСТЕРЕЖЕНИЯ
Заметим, что многие строки (такие как окружение и командная строка) даются во внутреннем формате, где подполя заканчиваются нулевыми байтами, так что возможно они будут более читабельны, если вы будете использовать для чтения команды od -c или tr "\000" "\n". В качестве альтернативы, прекрасно работает echo ’cat <file>’.
Данная страница руководства является неполной, возможно неточной и относится к тому виду документации, который обновляется очень часто.
БЛАГОДАРНОСТИ
Материал о /proc/sys/fs и /proc/sys/kernel полностью основан на документации в исходных текстах ядра, которую написал Rik van Riel.
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2004