Scroll to navigation

proc_pid_fdinfo(5) File Formats Manual proc_pid_fdinfo(5)

ИМЯ

/proc/pid/fdinfo/ - information about file descriptors

ОПИСАНИЕ

/proc/pid/fdinfo/ (начиная с Linux 2.6.22)
Этот подкаталог содержит один элемент на каждый файл, который открыл процесс, именем файла будет номер его файлового дескриптора. Файлы в этом каталоге доступны на чтение только владельцу процесса. Содержимое каждого файла может быть прочитано для получения информации о соответствующем файловом дескрипторе. Содержимое зависит от типа файла, на который ссылается соответствующий файловый дескриптор.
Для обычных файлов и каталогов содержимым будет, что-то типа:

$ cat /proc/12015/fdinfo/4
pos:    1000
flags:  01002002
mnt_id: 21
    

Поля:
Это десятичное число отражает смещение файла.
Это восьмеричное число отражает режим доступа к файлу и флаги состояния файла (смотрите open(2)). Если установлен флаг файлового дескриптора close-on-exec, то flags также содержат значение O_CLOEXEC.
До Linux 3.1 в этом поле некорректно показывалось значение O_CLOEXEC верное на момент открытия файла, а не текущее значение флага close-on-exec.
This field, present since Linux 3.15, is the ID of the mount containing this file. See the description of /proc/pid/mountinfo.
Для файловых дескрипторов eventfd (смотрите eventfd(2)) мы увидим (начиная с Linux 3.8) следующие поля:

pos:	0
flags:	02
mnt_id:	10
eventfd-count:               40
    

В eventfd-count содержится текущее значение счётчика eventfd counter (в виде шестнадцатеричного числа).
Для файловых дескрипторов epoll (смотрите epoll(7)) мы увидим (начиная с Linux 3.8) следующие поля:

pos:	0
flags:	02
mnt_id:	10
tfd:        9 events:       19 data: 74253d2500000009
tfd:        7 events:       19 data: 74253d2500000007
    

Каждая строка, начинающаяся с tfd, описывает один из файловых дескрипторов, который отслеживается через файловый дескриптор epoll (подробности смотрите в epoll_ctl(2)). Поле tfd содержит номер файлового дескриптора. Поле events представляет собой шестнадцатеричную маску событий, которые отслеживаются для этого файлового дескриптора. Поле data содержит данные, связанные с этим файловым дескриптором.
Для файловых дескрипторов signalfd (смотрите signalfd(2)) мы увидим (начиная с Linux 3.8) следующие поля:

pos:	0
flags:	02
mnt_id:	10
sigmask:	0000000000000006
    

В sigmask содержится шестнадцатеричная маска сигналов, которые принимаются через этот файловый дескриптор signalfd (в этом примере биты 2 и 3 установлены, что соответствует сигналам SIGINT и SIGQUIT; смотрите signal(7)).
Для файловых дескрипторов inotify (смотрите inotify(7)) мы увидим (начиная с Linux 3.8) следующие поля:

pos:	0
flags:	00
mnt_id:	11
inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
    

Каждая из строк, начинающаяся с «inotify», содержит информацию об одном отслеживаемом файле или каталоге. Поля в этой строке:
Отслеживаемый номер файлового дескриптора (десятичное число).
Номер иноды целевого файла (шестнадцатеричное число).
Идентификатор устройства, содержащего целевой файл (шестнадцатеричное число).
Маска отслеживаемых событий для целевого файла (шестнадцатеричное число).
Если ядро собрано с поддержкой exportfs, то путь целевого файла представляется в виде описателя (handle) файла, выраженного тремя шестнадцатеричными полями: fhandle-bytes, fhandle-type и f_handle.
Для файловых дескрипторов fanotify (смотрите fanotify(7)) мы увидим (начиная с Linux 3.8) следующие поля:

pos:	0
flags:	02
mnt_id:	11
fanotify flags:0 event-flags:88002
fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
    

В четвёртой строке содержится информация, определяющая когда была создана с помощью fanotify_init(2) группа fanotify:
Аргумент flags, переданный fanotify_init(2) (шестнадцатеричное число).
Аргумент event_f_flags, переданный fanotify_init(2) (шестнадцатеричное число).
В каждой дополнительной строке файла содержится информация об одной из меток в группе fanotify. Большинство полей аналогичны с inotify, за исключением:
Флаги, связанные с меткой (шестнадцатеричное число).
Маска событий, связанная с этой меткой (шестнадцатеричное число).
Маска событий, которые игнорируются для этой метки (шестнадцатеричное число).
Подробную информацию об этих полях смотрите в fanotify_mark(2).
Для файловых дескрипторов timerfd (смотрите timerfd(2)) мы увидим (начиная с Linux 3.17) следующие поля:

pos:    0
flags:  02004002
mnt_id: 13
clockid: 0
ticks: 0
settime flags: 03
it_value: (7695568592, 640020877)
it_interval: (0, 0)
    

Числовое значение идентификатора часов (соответствует одной из констант CLOCK_*, определённых в <time.h>), используемое для отметки действия таймера (в этом примере 0 — CLOCK_REALTIME).
Количество раз прошедших окончаний таймера (т. е., значение, которое вернул бы для него вызов read(2)).
В этом поле перечислены флаги в восьмеричном виде (в этом примере установлены TFD_TIMER_ABSTIMEи TFD_TIMER_CANCEL_ON_SET), с которым был запущен timerfd последний раз (смотрите timerfd_settime(2)).
В этом поле содержит количество времени до следующего истечения таймера, выраженное в секундах и наносекундах. Это всегда относительное значение, независимо от флага создания таймера TFD_TIMER_ABSTIME.
В этом поле содержится интервал таймера, выраженный в секундах и наносекундах (поля it_value и it_interval содержат значения, которые вернул бы вызов timerfd_gettime(2) для этого файлового дескриптора).

СМОТРИТЕ ТАКЖЕ

proc(5)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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

2 мая 2024 г. Linux man-pages (unreleased)