proc

PROC(5)                  Руководство программиста Linux                  PROC(5)



ИМЯ
       proc - псевдо-файловая система с информацией о процессах и системе


ОПИСАНИЕ
       /proc - это псевдо-файловая система, которая используется в качестве
       интерфейса к структурам данных в ядре, чтобы избежать чтения и записи
       /dev/kmem.  Большинство расположенных в ней файлов доступны только для
       чтения, но некоторые файлы позволяют изменять переменные ядра.

       Ниже дается краткая информация об иерархии /proc.

       [число]
              Каждому запущенному процессу соответствует подкаталог с именем,
              соответствующим идентификатору этого процесса (его pid).  Каждый
              из этих подкаталогов содержит следующие псевдо-файлы и каталоги.

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

              cwd    Это ссылка на текущий рабочий каталог процесса. Чтобы найти
                     рабочий каталог процесса с идентификатором 20, можно
                     сделать следующее:
                     cd /proc/20/cwd; /bin/pwd

              Заметим, что команда pwd часто является встроенной в командный
              интерпретатор и может в этом контексте работать некорректно.

              environ
                     Этот файл содержит окружение процесса. Записи в файле
                     разделяются символами с кодом ноль, а в конце файла также
                     может быть такой символ.  Таким образом, чтобы вывести
                     окружение процесса 1, вы должны сделать следующее:
                     (cat /proc/1/environ; echo) | tr "\000" "\n"

              (Чтобы понять, зачем такое могло бы понадобиться, см.  lilo(8).)

              exe    указатель (в виде символьной ссылки) на исполняемый файл.
                     Вызов readlink(2) на этот специальный файл exe под Linux
                     2.0 и более ранних версий возвращает строку формата:

                     [устройство]:индексный_дескриптор

                     Например, строка [0301]:1502 означает индексный дескриптор
                     1502 на устройстве со старшим номером устройства 03 (IDE,
                     MFM и т. д.)  и младшим номером устройства 01 (первый
                     раздел на первом диске).  Под Linux 2.2 ссылка содержит
                     фактическое полное имя файла команды.

                     С этой символьной ссылкой можно работать обычным образом --
                     попытка открыть "exe" приведет к открытию исполняемого
                     файла.  Вы можете даже набрать команду /proc/[число]/exe
                     для запуска другой копии процесса с идентификатором
                     [число].

                     Для обнаружения этого файла может быть использована команда
                     find(1) с опцией -inum.

              fd     Это подкаталог, содержащий одну запись на каждый файл,
                     который в данный момент открыт процессом.  Имя каждой такой
                     записи соответствует номеру файлового дескриптора и
                     является символьной ссылкой на реальный файл (как и в
                     случае с exe).  Таким образом, 0 - это стандартный ввод, 1
                     - стандартный вывод, 2 - стандартный вывод ошибок и т. д.

                     Программы, которые работают с файлом, но не позволяют
                     указать стандартный ввод, или же которые пишут в файл, и не
                     желают писать на стандартный вывод, можно обманывать с
                     помощью этого подкаталога.  Например, если флаг -i задает
                     входной файл, а -o -- выходной файл, то можно сделать так:
                     (CWfoobar -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
                        00000000-0002f000 r-x-- 00000400 03:03 1401
                        0002f000-00032000 rwx-p 0002f400 03:03 1401
                        00032000-0005b000 rwx-p 00000000 00:00 0
                        60000000-60098000 rwx-p 00000400 03:03 215
                        60098000-600c7000 rwx-p 00000000 00:00 0
                        bfffa000-c0000000 rwx-p 00000000 00:00 0

              Здесь address -- это адресное пространство, занятое процессом, а
              perms -- права доступа к нему:
                   r = можно читать
                   w = можно писать
                   x = можно выполнять
                   s = можно использовать несколькими процессами совместно
                   p = личная (копирование при записи)

              offset -- это смещение в файле и т. п.  dev -- это устройство
              (старший номер:младший номер), а inode -- это индексный дескриптор
              на данном устройстве.  0 означает, что с данной областью памяти не
              ассоциированы индексные дескрипторы: примером тому является
              сегмент BSS.

              Под Linux 2.2 имеется дополнительное поле, предоставляющее полное
              имя файла, если возможно.

              mem    Это не тоже самое, что и устройство mem (1:1), несмотря на
                     то, что фактически файл имеет такие же номера устройства.
                     Устройство /dev/mem соответствует физической памяти без
                     каких-либо трансляций адресов, а этот файл mem является
                     памятью процесса, которому он соответствует.  К этому файлу
                     в настоящий момент нельзя применять вызов mmap(2), потому
                     что обобщенный mmap(2) еще не добавлен в ядро.  (На момент,
                     когда вы читаете данный текст, это может быть уже сделано.)

              mmap   Каталог карт, полученных с помощью mmap(2), которые
                     являются символьными ссылками типа exe, fd/* и т. д.
                     Заметим, что каталог maps содержит надмножество этой
                     информации, так что файлы /proc/*/mmap должны считаться
                     устаревшими.

                     "0" обычно в libc.so.4.

                     Файлы /proc/*/mmap были удалены в ядрах Linux версии
                     1.1.40. (Они действительно устарели!)

              root   Unix и Linux поддерживают идею о корневом каталоге файловой
                     системы, который может быть задан отдельно для каждого
                     процесса системным вызовом chroot(2).  root указывает на
                     этот самый корень файловой системы, и ведет себя так же,
                     как и exe, fd/* и т. д.

              stat   Информация о статусе процесса.  Она используется командой
                     ps(1).

                     Вот поля по порядку с соответствующими им спецификаторами
                     форматов для scanf(3):

                     pid %d Идентификатор процесса.

                     comm %s
                            Имя исполняемого файла в круглых скобках. Оно видимо
                            независимо от того, находится ли исполняемый файл в
                            своппинге или нет.

                     state %c
                            Один из символов из строки "RSDZT", где R --
                            запущен, S -- процесс "спит" в прерываемом ожидании,
                            D -- процесс "спит" в непрерываемом ожидании или
                            находится в своппинге, Z -- процесс превратился в
                            зомби, или же T -- процесс трассируется или
                            остановлен (по сигналу).

                     ppid %d
                            Идентификатор процесса-родителя (PID).

                     pgrp %d
                            Идентификатор группы процесса.

                     session %d
                            Идентификатор сессии процесса.

                     tty %d Терминал tty, который использует процесс.

                     tpgid %d
                            Идентификатор группы процесса, который в настоящий
                            момент владеет терминалом tty, к которому подключен
                            данный процесс.

                     flags %u
                            Флаги процесса.  В настоящий момент каждый флаг
                            имеет установленный математический бит, поскольку
                            crt0.s проверяет эмуляцию математического
                            сопроцессора, и, таким образом, этот бит не
                            включается в вывод.  Наверное, это ошибка, потому
                            что не каждый процесс является скомпилированной
                            программой на языке C. Математический бит должен
                            быть десятичным числом 4, а бит трассировки --
                            десятичным числом 10.

                     minflt %u
                            Количество незначительных faults, которые возникли
                            при работе процесса, и которые не требуют загрузки
                            страницы памяти с диска.

                     cminflt %u
                            Количество незначительных faults, которые возникли
                            при работе процесса и его потомков.

                     majflt %u
                            Количество значительных faults, которые возникли при
                            работе процесса, и которые потребовали загрузки
                            страницы памяти с диска.

                     cmajflt %u
                            Количество значительных faults, которые возникли при
                            работе процесса и его потомков.

                     utime %d
                            Количество мигов (jiffies), которые данный процесс
                            провел в режиме пользователя.

                     stime %d
                            Количество мигов, которые данный процесс провел в
                            режиме ядра.

                     cutime %d
                            Количество мигов, которые данный процесс и его
                            потомки провели в режиме пользователя.

                     cstime %d
                            Количество мигов, которые данный процесс и его
                            потомки провели в режиме ядра.

                     counter %d
                            Текущий максимальный размер в мигах следующей
                            временной порции работы процесса или сколько в
                            данный момент осталось мигов от текущей порции, если
                            в данный момент запущен этот процесс.

                     priority %d
                            Стандартная величина приоритета (для nice) плюс 15.
                            Данное значение в ядре никогда не бывает
                            отрицательным.

                     timeout %u
                            Время в мигах следующего тайм-аута процесса.

                     itrealvalue %u
                            Время (в мигах) перед следующей посылкой процессу
                            SIGALRM из-за внутреннего таймера.

                     starttime %d
                            Время в мигах после начальной загрузки системы,
                            соответствующее моменту запуска процесса.

                     vsize %u
                            Размер виртуальной памяти

                     rss %u Резидентный Размер: количество страниц, которые
                            занимает процесс в реальной памяти, минус 3 для
                            административных целей.  Это те страницы, которые
                            заняты кодом, данными и пространством стека.  Сюда
                            не включаются страницы, которые не были загружены по
                            требованию или которые находятся в своппинге.

                     rlim %u
                            Текущий лимит в байтах на резидентный размер
                            процесса (обычно 2.147.483.647).

                     startcode %u
                            Адрес, выше которого может выполняться код
                            программы.

                     endcode %u
                            Адрес, ниже которого может выполняться код программ.

                     startstack %u
                            Адрес начала стека.

                     kstkesp %u
                            Текущее значение esp (32-битного указателя стека),
                            найденное на странице стека в ядре для данного
                            процесса.

                     kstkeip %u
                            Текущее значение EIP (32-битного указателя
                            инструкций).

                     signal %d
                            Карта ожидающих сигналов (обычно 0).

                     blocked %d
                            Карта блокированных сигналов (обычно 0, или 2 для
                            командных интерпретаторов).

                     sigignore %d
                            Карта игнорируемых сигналов.

                     sigcatch %d
                            Карта перехваченных сигналов.

                     wchan %u
                            Это "канал", в котором ожидает процесс.  Это адрес
                            системного вызова, а его название можно найти в
                            списке имен, если вам нужно текстовое имя. (Если у
                            вас свежий /etc/psdatabase, то попробуйте выполнить
                            ps l, чтобы увидеть поле WCHAN в действии).


       cpuinfo
              Это коллекция элементов, зависящих от процессора и системной
              архитектуры; для каждой поддерживаемой архитектуры список
              различен. Имеются только две общих записи: cpu, которая сообщает,
              какой процессор используется в данный момент и BogoMIPS --
              системная константа, которая высчитывается во время инициализации
              ядра.

       devices
              Текстовый список старших номеров устройств и групп устройств.  Он
              может быть использован скриптами MAKEDEV для того, чтобы создать
              устройства, соответствующие тем, которые поддерживает ядро.

       dma    Список зарегистрированных каналов ISA DMA (прямого доступа в
              память), которые используются в данный момент.

       filesystems
              Текстовый список файловых систем, поддержка которых вкомпилирована
              в ядро. Обычно используется программой mount(1) для поиска нужной
              файловой системы, если она не указана при монтировании.

       interrupts
              Используется для подсчета количества прерываний, соответствующих
              каждому IRQ.  Используется, по крайней мере, на архитектуре i386.
              Очень легко прочитать, так как записи в ASCII.

       ioports
              Список зарегистрированных портов ввода-вывода, которые
              используются в данный момент.

       kcore  Этот файл отображает физическую память системы и записывается в
              формате файла core.  С помощью этого псевдо-файла и ядра, из
              которого не убраны таблицы символов
              (/usr/src/linux/tools/zSystem), можно использовать GDB для
              проверки текущего состояния любых структур ядра.

              Полная длина этого файла - это размер физической памяти (RAM) плюс
              4KB.

       kmsg   Этот файл может быть использован вместо системного вызова
              syslog(2) для протоколирования сообщений ядра.  Процесс должен
              иметь привилегии суперпользователя, чтобы читать этот файл, причем
              делать это может только один процесс. Данный файл не следует
              читать, если запущен процесс syslog, который использует системный
              вызов syslog(2) для протоколирования сообщений ядра.

              Информация в этом файле извлекается с помощью программы dmesg(8).

       ksyms  Файл содержит определения символов, экспортируемых ядром, которые
              используются программами типа insmod для динамического связывания
              и привязки загружаемых модулей.

       loadavg
              Средняя загрузка дает количество заданий в очереди запуска в
              среднем за 1, 5 и 15 минут. Это то же самое, что и средняя
              загрузка, которую выдает программа uptime(1) и другие.

       locks  Этот файл показывает файловые блокировки, установленные в текущий
              момент.

       malloc Данный файл существует только если во время компиляции был задан
              флаг CONFIGDEBUGMALLOC.

       meminfo
              Этот файл используется программой free(1) для формирования отчета
              о свободной и используемой памяти (как физической, так и
              виртуальной, в своп-файле), а также разделяемой памяти и памяти
              под буферы, которую использует ядро.

              Данные в том же формате, который выдает команда free(1), за
              исключением того, что цифры даются в байтах, а не килобайтах.

       modules
              Текстовый список модулей, которые были загружены системой.

       net    разные псевдо-файлы, содержащие информацию по какой-нибудь части
              сетевой подсистемы.  Они содержат структуры в ASCII и прекрасно
              читаются утилитой cat. Однако, стандартная утилита netstat(8)
              предоставляет более чистый доступ к этим файлам.

              arp    Файл содержит читабельный ASCII-дамп таблицы ARP ядра,
                     которая используется для определения адресов. Она покажет
                     как полученные динамически, так и заданные явно записи ARP.
                     Формат файла такой:
                   IP address       HW type     Flags       HW address
                   10.11.100.129    0x1         0x6         00:20:8A:00:0C:5A
                   10.11.100.5      0x1         0x2         00:C0:EA:00:00:4E
                   44.131.10.6      0x3         0x2         GW4PTS

              Здесь 'IP address' это адрес машины в нотации IPv4, 'HW type' -
              это тип аппаратного обеспечения для этого адреса согласно RFC 826.
              Flags - это внутренние флаги структуры ARP (определенные в
              /usr/include/linux/if_arp.h), а 'HW address' -- это физическое
              отображение IP-адреса, если оно известно.

              dev    В этом псевдо-файле содержится информация о состоянии
                     сетевых устройств.  Она представляет собой количество
                     принятых и отправленных пакетов, количество ошибок и
                     коллизий, и другую базовую статистику.  Эта информация
                     используется программой ifconfig(8) для вывода отчета о
                     состоянии устройства. Формат информации такой:
        Inter-|   Receive                  |   Transmit
         face |packets errs drop fifo frame|packets errs drop fifo colls carrier
            lo:      0    0    0    0    0     2353    0    0    0     0    0
          eth0: 644324    1    0    0    1   563770    0    0    0   581    0

              ipx    Нет информации.

              ipx_route
                     Нет информации.

              rarp   Данный файл использует тот же формат, что и файл arp и
                     содержит обратную (реверсную) базу данных адресов ARP,
                     используемую при работе rarp(8).  Если поддержки RARP нет в
                     ядре, то этот файл не существует.

              raw    Содержит дамп таблицы беспротокольных сокетов.  Большая
                     часть этой информации не используется ни для чего, кроме
                     отладки.
                      Значение 'sl' это хешируемый слот ядра для гнезда,
                     исходящая и входящая очереди данных в терминах
                     использования памяти ядра.  Поля 'tr', 'tm->when' и
                     'rexmits' не используются RAW. Поле uid содержит euid
                     (фактический идентификатор пользователя) создателя данного
                     гнезда.

              route  Нет информации, но выглядит похоже на route(8).

              snmp   Этот файл содержит ASCII данные, необходимые для MIB
                     (management information bases) по IP, ICMP, TCP и UDP для
                     SNMP-агента.  В момент написания TCP MIB является неполным.
                     Есть надежда, что это будет исправлено в 1.2.0.

              tcp    Содержит дамп таблицы TCP-сокетов.  Большая часть этой
                     информации не используется ни для чего, кроме отладки.
                     Значение 'sl' это хешируемый слот ядра для гнезда,
                     соединение). 'St' - это внутреннее состояние сокета.
                     'tx_queue' и 'rx_queue' это исходящая и входящая очереди
                     данных в терминах использования памяти ядра.  Поля 'tr',
                     'tm->when' и 'rexmits' содержат внутреннюю информацию ядра
                     о состоянии сокета и полезны только для отладки. Поле uid
                     содержит euid (фактический идентификатор пользователя)
                     создателя данного сокета.

              udp    Содержит дамп таблицы UDP-сокетов. Большая часть этой
                     информации не используется ни для чего, кроме отладки.
                     Значение 'sl' -- это хешируемый слот ядра для гнезда,
                     соединение). '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' - это
              внутреннее состояние гнезда, а

       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, и идентичен подкаталогу, соответствующему номеру процесса.

       stat   статистика ядра/системы

              cpu  3357 0 4313 1362393
                     Количество мигов (jiffies) (сотых секунды), которые система
                     проводит, соответственно, в режиме пользователя, режиме
                     пользователя с низким приоритетом (nice), режиме системы и
                     в режиме простаивающих задач.  Последнее значение должно
                     быть в два раза больше второго значения из псевдо-файла
                     uptime.

              disk 0 0 0 0
                     Четыре поля, относящихся к дискам, не реализованы в
                     настоящий момент.  Я даже не уверен, что они будут
                     реализованы, потому что статистика ядра на других машинах
                     обычно отслеживает как скорость передачи данных, так и
                     количество операций ввода-вывода, тогда как в данном случае
                     доступно всего одно значение.

              page 5741 1808
                     Количество страниц, которые система загрузила с диска и
                     выгрузила на диск.

              swap 1 0
                     Количество страниц своппинга, которые загружены и
                     выгружены.

              intr 1462898
                     Количество прерываний, случившихся с момента загрузки
                     системы.

              ctxt 115315
                     Количество переключений контекста, произошедших в системе.

              btime 769041601
                     Время начальной загрузки, в секундах после 1 января 1970 г.

       sys    Этот каталог (присутствующий, начиная с 1.3.57) содержит несколько
              файлов и подкаталогов, которые соответствуют переменным ядра. Эти
              переменные могут быть прочитаны и иногда изменены с использованием
              файловой системы proc, а также с помощью системного вызова
              sysctl(2).  На сегодняшний момент имеются каталоги kernel, net, vm
              каждый из которых содержит много файлов и подкаталогов.

              kernel Данный каталог содержит файлы domainname, file-max, file-
                     nr, hostname, inode-max, inode-nr, osrelease, ostype,
                     panic, real-root-dev, securelevel, version, о функциях,
                     которые они выполняют, вы можете догадаться по их
                     названиям.

              Файл (только для чтения) file-nr дает количество открытых в
              настоящий момент файлов.

              Файл file-max дает максимальное количество открытых файлов,
              которым может управлять ядро.  Если вам не достаточно 1024, то
              попробуйте
              echo 4096 > /proc/sys/kernel/file-max

              Точно так же, файлы inode-nr и inode-max задают существующее и
              максимальное количество индексных дескрипторов.

              Файлы ostype, osrelease, version соответствуют подстрокам
              /proc/version.

              Файл panic предоставляет доступ на чтение/запись к переменной ядра
              panic_timeout.  Если ее значение равно нулю, то ядро будет
              зациклено при возникновении паники; если не нуль, то значение
              говорит, что ядро должно выполнить перезагрузку после указанного
              количества секунд.

              Файл securelevel в настоящий момент представляется не слишком
              осмысленным -- суперпользователю позволено слишком многое.

       uptime Файл содержит две цифры: время работы системы (в секундах) и
              время, в течении которого система находится в процессе простоя (в
              секундах).

       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), readlink(2),
       mmap(2), chroot(2), syslog(2), hier(7), arp(8), dmesg(8), netstat(8),
       route(8), ifconfig(8), procinfo(8) и многое другое

СОВМЕСТИМОСТЬ
       Примерно соответствует ядру Linux 1.3.11.  Пожалуйста, обновляйте эту
       страницу руководства, если нужно!

       Последнее обновление сделано для версии Linux 1.3.11.

ПРЕДОСТЕРЕЖЕНИЯ
       Заметим, что многие строки, такие как окружение и командная строка,
       находятся во внутреннем формате, где отдельные поля завершаются нулевыми
       байтами, поэтому может оказаться, что для их чтения придется использовать
       команды od -c или tr "\000" "\n".

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

ОШИБКИ
       Файловая система /proc может привести к дырам в безопасности для
       процессов, запущенных с chroot(2).  Например, если /proc монтируется в
       иерархии chroot, то chdir(2) на /proc/1/root вернет первоначальную
       корневую файловую систему.  Это можно считать возможностью, а не ошибкой,
       потому что Linux пока не поддерживает вызов fchroot(2).




                                  22 Июля 1996                           PROC(5)