.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2017 David Howells .\" .\" Derived from the stat.2 manual page: .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" Parts Copyright (c) 1995 Nicolai Langfeldt (janl@ifi.uio.no), 1/1/95 .\" and Copyright (c) 2006, 2007, 2014 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH statx 2 "1 июня 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ statx \- считывает состояние файла (расширенный вариант) .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#define _GNU_SOURCE \fP/* Смотрите feature_test_macros(7) */ \fB#include \fP/* Определение констант \fBAT_*\fP */ \fB#include \fP .PP \fBint statx(int \fP\fIdirfd\fP\fB, const char *restrict \fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB,\fP \fB unsigned int \fP\fImask\fP\fB, struct statx *restrict \fP\fIstatxbuf\fP\fB);\fP .fi .SH ОПИСАНИЕ Этот системный вызов возвращает информацию о файле, записывая её в буфер, на который указывает \fIstatxbuf\fP. Возвращаемый буфер представляет собой структуру следующего вида: .PP .in +4n .EX struct statx { __u32 stx_mask; /* Mask of bits indicating filled fields */ __u32 stx_blksize; /* Block size for filesystem I/O */ __u64 stx_attributes; /* Extra file attribute indicators */ __u32 stx_nlink; /* Number of hard links */ __u32 stx_uid; /* User ID of owner */ __u32 stx_gid; /* Group ID of owner */ __u16 stx_mode; /* File type and mode */ __u64 stx_ino; /* Inode number */ __u64 stx_size; /* Total size in bytes */ __u64 stx_blocks; /* Number of 512B blocks allocated */ __u64 stx_attributes_mask; /* Mask to show what\[aq]s supported in stx_attributes */ \& /* The following fields are file timestamps */ struct statx_timestamp stx_atime; /* Last access */ struct statx_timestamp stx_btime; /* Creation */ struct statx_timestamp stx_ctime; /* Last status change */ struct statx_timestamp stx_mtime; /* Last modification */ \& /* If this file represents a device, then the next two fields contain the ID of the device */ __u32 stx_rdev_major; /* Major ID */ __u32 stx_rdev_minor; /* Minor ID */ \& /* The next two fields contain the ID of the device containing the filesystem where the file resides */ __u32 stx_dev_major; /* Major ID */ __u32 stx_dev_minor; /* Minor ID */ \& __u64 stx_mnt_id; /* Mount ID */ \& /* Direct I/O alignment restrictions */ __u32 stx_dio_mem_align; __u32 stx_dio_offset_align; }; .EE .in .PP Метки времени файла хранятся в структуре следующего вида: .PP .in +4n .EX struct statx_timestamp { __s64 tv_sec; /* количество секунд с начала Эпохи (время UNIX) */ __u32 tv_nsec; /* количество наносекунд, начиная с tv_sec */ }; .EE .in .PP (зарезервированное пространство и заполнители не показаны) .SS "При вызове statx\fR():\fP" Для получения состояния файла не требуется иметь права доступа к самому файлу, но в случае указания \fBstatx\fP() с путём, потребуются права выполнения (поиска) во всех каталогах, указанных в полном имени файла \fIpathname\fP. .PP Вызов \fBstatx\fP() для определения нужного файла использует \fIpathname\fP, \fIdirfd\fP и \fIflags\fP следующими путями: .TP Абсолютный путь Если \fIpathname\fP начинается с косой черты, то целевой файла задан абсолютным путём. В этом случае значение \fIdirfd\fP игнорируется. .TP Относительный путь Если \fIpathname\fP начинается не с косой черты и \fIdirfd\fP равно \fBAT_FDCWD\fP, то \fIpathname\fP рассматривается относительно текущего рабочего каталога процесса. .TP Путь, задаваемый относительно каталога If \fIpathname\fP is a string that begins with a character other than a slash and \fIdirfd\fP is a file descriptor that refers to a directory, then \fIpathname\fP is a relative pathname that is interpreted relative to the directory referred to by \fIdirfd\fP. (See \fBopenat\fP(2) for an explanation of why this is useful.) .TP По файловому дескриптору Если значение \fIpathname\fP равно пустой строке и в \fIflags\fP (смотрите ниже) указан флаг \fBAT_EMPTY_PATH\fP, то целевым файлом считается тот, на который указывает файловый дескриптор в \fIdirfd\fP. .PP Значение \fIflags\fP можно использовать для уточнения поиска на основе пути. Оно составляется из побитно слагаемых следующих констант: .TP \fBAT_EMPTY_PATH\fP .\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d Если значение \fIpathname\fP равно пустой строке, то вызов выполняет действие с файлом, на который ссылается \fIdirfd\fP (может быть получен с помощью \fBopen\fP(2) с флагом \fBO_PATH\fP). В этом случае \fIdirfd\fP может ссылаться на файл любого типа, а не только на каталог. .IP Если \fIdirfd\fP равно \fBAT_FDCWD\fP, то вызов использует текущий рабочий каталог. .TP \fBAT_NO_AUTOMOUNT\fP Don't automount the terminal ("basename") component of \fIpathname\fP if it is a directory that is an automount point. This allows the caller to gather attributes of an automount point (rather than the location it would mount). This flag has no effect if the mount point has already been mounted over. .IP The \fBAT_NO_AUTOMOUNT\fP flag can be used in tools that scan directories to prevent mass\-automounting of a directory of automount points. .IP All of \fBstat\fP(2), \fBlstat\fP(2), and \fBfstatat\fP(2) act as though \fBAT_NO_AUTOMOUNT\fP was set. .TP \fBAT_SYMLINK_NOFOLLOW\fP Если значение \fIpathname\fP является символьной ссылкой, не разыменовывать её, а выдать информацию о самой ссылке, подобно \fBlstat\fP(2). .PP Значение \fIflags\fP также может использоваться для контроля типа синхронизации, которое выполняет ядро при опросе файла на удалённой файловой системе. Оно составляется из побитно слагаемых следующих значений: .TP \fBAT_STATX_SYNC_AS_STAT\fP Работать подобно \fBstat\fP(2). Используется по умолчанию и очень зависит от файловой системы. .TP \fBAT_STATX_FORCE_SYNC\fP Принудительно синхронизировать атрибуты с сервером. Может потребовать от сетевой файловой системы выполнить запись данных для получения правильных меток времени. .TP \fBAT_STATX_DONT_SYNC\fP Не выполнять синхронизацию, а использовать информацию из кэша (если есть). Это может означать, что полученная информация будет не точна, но в случае с сетевыми файловыми системами это позволяет не обращаться к серверу и даже может быть разрыв соединения. .PP Аргумент \fImask\fP в \fBstatx\fP() используется для указания ядру какие поля поля нужны вызывающему. Значение \fImask\fP представляет побитовую комбинацию (посредством OR) следующих констант: .PP .in +4n .TS lB l. STATX_TYPE Требуется stx_mode & S_IFMT STATX_MODE Want stx_mode & \[ti]S_IFMT STATX_NLINK Требуется stx_nlink STATX_UID Требуется stx_uid STATX_GID Требуется stx_gid STATX_ATIME Требуется stx_atime STATX_MTIME Требуется stx_mtime STATX_CTIME Требуется stx_ctime STATX_INO Требуется stx_ino STATX_SIZE Требуется stx_size STATX_BLOCKS Требуется stx_blocks STATX_BASIC_STATS [всё вышеперечисленное] STATX_BTIME Требуется stx_btime STATX_ALL The same as STATX_BASIC_STATS | STATX_BTIME. It is deprecated and should not be used. STATX_MNT_ID Want stx_mnt_id (since Linux 5.8) STATX_DIOALIGN Want stx_dio_mem_align and stx_dio_offset_align (since Linux 6.1; support varies by filesystem) .TE .in .PP Заметим в общем, что ядро \fIне\fP не отклоняет значения в \fImask\fP, отличные от вышеперечисленных (исключение из правила смотрите в описании ошибки \fBEINVAL\fP). Вместо этого оно просто информирует вызывающего, какие значения поддерживаются ядром и файловой системой через поле \fIstatx.stx_mask\fP. Поэтому \fIне устанавливайте\fP значение \fImask\fP в \fBUINT_MAX\fP (все биты), так как один или более бит в будущем могут использоваться для указания расширения буфера. .SS "Возвращаемая информация" Информация о состоянии целевого файла возвращается в структуре \fIstatx\fP, на которую указывает \fIstatxbuf\fP. Она содержит \fIstx_mask\fP, в котором описывается возвращённая информация. Значение \fIstx_mask\fP имеет тот же формат, что и аргумент \fImask\fP, и установленные в нём бит показывают какие поля были заполнены. .PP Стоит упомянуть, что ядро может вернуть поля, которые не был запрошены и запрошенные поля могут быть не заполнены, в зависимости от поддержки в нижележащей файловой системе (поля, которым были присвоены значение, но которые не были запрошены, можно игнорировать). В этих случаях \fIstx_mask\fP будет не равно \fImask\fP. .PP Если файловая система не поддерживает поле или если значение поле содержит непрезентабельное значение (например, файл экзотического типа), то битовая маска в \fIstx_mask\fP, соответствующая этому полю, будет очищена даже если пользователь запросил его, и в целях совместимости в качестве значения, если возможно, будет помещена пустышка (например, в некоторых случаях пустышки UID и GID могут задаваться при монтировании). .PP Файловая система также может заполнить поля, которые вызывающий не запрашивал, при условии, что их значения доступны и это ничего стоит. Если это выполняется, то будут установлены соответствующие биты в \fIstx_mask\fP. .PP .\" Background: inode attributes are modified with i_mutex held, but .\" read by stat() without taking the mutex. \fIЗамечание\fP: с целью производительности и простоты различные поля в структуре \fIstatx\fP могут содержать информацию о состоянии из различных моментов выполнения системного вызова. Например, если изменяется \fIstx_mode\fP или \fIstx_uid\fP другим процессом посредством вызова \fBchmod\fP(2) или \fBchown\fP(2), то \fBstat\fP() может вернуть старое значение \fIstx_mode\fP вместе с новым \fIstx_uid\fP, или старое \fIstx_uid\fP вместе с новым \fIstx_mode\fP. .PP Помимо полей \fIstx_mask\fP (описанной выше) структура \fIstatx\fP имеет следующие поля: .TP \fIstx_blksize\fP «Предпочтительный» размер блока для эффективного ввода/вывода в файловой системе (запись в файл более мелкими порциями может привести к неэффективному чтению/изменению/повторной записи). .TP \fIstx_attributes\fP Дополнительная информация о состоянии файла (подробности ниже). .TP \fIstx_nlink\fP Количество жёстких ссылок на файл. .TP \fIstx_uid\fP Пользовательский идентификатор владельца файла. .TP \fIstx_gid\fP Групповой идентификатор владельца файла. .TP \fIstx_mode\fP Тип файла и режим. Дополнительную информацию смотрите в \fBinode\fP(7). .TP \fIstx_ino\fP Номер иноды файла. .TP \fIstx_size\fP Размер файла (если он обычный или является символьной ссылкой) в байтах. Размер символьной ссылки равен длине пути файла, на который она ссылается, без конечного нулевого байта. .TP \fIstx_blocks\fP Количество блоков (по 512 байт), выделенных для файла на носителе (может быть меньше, чем \fIstx_size\fP/512, когда в файле есть пропуски (holes)). .TP \fIstx_attributes_mask\fP Маска, показывающая какие биты в \fIstx_attributes\fP поддерживаются VFS и файловой системой. .TP \fIstx_atime\fP Метка времени последнего доступа к файлу. .TP \fIstx_btime\fP Метка времени создания файла. .TP \fIstx_ctime\fP Метка времени последнего изменения состояния файла. .TP \fIstx_mtime\fP Метка времени последнего изменения файла. .TP \fIstx_dev_major\fP и \fIstx_dev_minor\fP Устройство, на котором находится файл (инода). .TP \fIstx_rdev_major\fP и \fIstx_rdev_minor\fP Устройство, который этот файл (инода) представляет, если файл имеет блочный или символьный тип устройства. .TP \fIstx_mnt_id\fP .\" commit fa2fcf4f1df1559a0a4ee0f46915b496cc2ebf60 The mount ID of the mount containing the file. This is the same number reported by \fBname_to_handle_at\fP(2) and corresponds to the number in the first field in one of the records in \fI/proc/self/mountinfo\fP. .TP \fIstx_dio_mem_align\fP The alignment (in bytes) required for user memory buffers for direct I/O (\fBO_DIRECT\fP) on this file, or 0 if direct I/O is not supported on this file. .IP \fBSTATX_DIOALIGN\fP (\fIstx_dio_mem_align\fP and \fIstx_dio_offset_align\fP) is supported on block devices since Linux 6.1. The support on regular files varies by filesystem; it is supported by ext4, f2fs, and xfs since Linux 6.1. .TP \fIstx_dio_offset_align\fP The alignment (in bytes) required for file offsets and I/O segment lengths for direct I/O (\fBO_DIRECT\fP) on this file, or 0 if direct I/O is not supported on this file. This will only be nonzero if \fIstx_dio_mem_align\fP is nonzero, and vice versa. .PP .\" Дополнительную информацию об этих полях смотрите в \fBinode\fP(7). .SS "Атрибуты файла" В поле \fIstx_attributes\fP содержится набор флагов (объединённых через ИЛИ), которые отображают дополнительные атрибуты файла. Заметим, что для атрибута, не указанного как поддерживаемого в \fIstx_attributes_mask\fP, имеющееся здесь значение является не корректным. Биты \fIstx_attributes_mask\fP точно бит в бит соответствуют битам поля \fIstx_attributes\fP. .PP Флаги: .TP \fBSTATX_ATTR_COMPRESSED\fP Файл сжат файловой системой и для доступа могут потребоваться дополнительные ресурсы. .TP \fBSTATX_ATTR_IMMUTABLE\fP Файл невозможно изменить: его нельзя переименовать или удалить, на этот файл нельзя создать жёсткую ссылку и в него нельзя выполнить запись данных. Смотрите \fBchattr\fP(1). .TP \fBSTATX_ATTR_APPEND\fP Файл может быть открыт только для записи в режиме добавления. Запись в произвольное место не разрешается. Смотрите \fBchattr\fP(1). .TP \fBSTATX_ATTR_NODUMP\fP Файл не предназначен для резервного копирования программой резервного копирования, например \fBdump\fP(8). Смотрите \fBchattr\fP(1). .TP \fBSTATX_ATTR_ENCRYPTED\fP Для расшифровки файла файловой системой требуется ключ. .TP \fBSTATX_ATTR_VERITY\fP (начиная с Linux 5.5) .\" commit 3ad2522c64cff1f5aebb987b00683268f0cc7c29 The file has fs\-verity enabled. It cannot be written to, and all reads from it will be verified against a cryptographic hash that covers the entire file (e.g., via a Merkle tree). .TP \fBSTATX_ATTR_DAX\fP (начиная с Linux 5.8) The file is in the DAX (cpu direct access) state. DAX state attempts to minimize software cache effects for both I/O and memory mappings of this file. It requires a file system which has been configured to support DAX. .IP DAX generally assumes all accesses are via CPU load / store instructions which can minimize overhead for small accesses, but may adversely affect CPU utilization for large transfers. .IP File I/O is done directly to/from user\-space buffers and memory mapped I/O may be performed with direct memory mappings that bypass the kernel page cache. .IP While the DAX property tends to result in data being transferred synchronously, it does not give the same guarantees as the \fBO_SYNC\fP flag (see \fBopen\fP(2)), where data and the necessary metadata are transferred together. .IP A DAX file may support being mapped with the \fBMAP_SYNC\fP flag, which enables a program to use CPU cache flush instructions to persist CPU store operations without an explicit \fBfsync\fP(2). See \fBmmap\fP(2) for more information. .TP \fBSTATX_ATTR_MOUNT_ROOT\fP (since Linux 5.8) .\" commit 80340fe3605c0e78cfe496c3b3878be828cfdbfe The file is the root of a mount. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, zero is returned. On error, \-1 is returned, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEACCES\fP Запрещён поиск в одном из каталогов пути \fIpathname\fP (смотрите также \fBpath_resolution\fP(7)). .TP \fBEBADF\fP В \fIpathname\fP содержится относительный путь, но значение \fIdirfd\fP не равно \fBAT_FDCWD\fP и не является правильным файловым дескриптором. .TP \fBEFAULT\fP Значение \fIpathname\fP или \fIstatxbuf\fP равно NULL или указывает на расположение вне доступного процессу адресного пространства. .TP \fBEINVAL\fP Указано неверное значение в \fIflags\fP. .TP \fBEINVAL\fP В \fImask\fP указан зарезервированный флаг (в настоящее время есть только один флаг, для него определена константа \fBSTATX__RESERVED\fP со значением 0x80000000U). .TP \fBELOOP\fP Во время определения пути встретилось слишком много символьных ссылок. .TP \fBENAMETOOLONG\fP Слишком длинное значение аргумента \fIpathname\fP. .TP \fBENOENT\fP Компонент пути \fIpathname\fP не существует или в \fIpathname\fP указана пустая строка и в \fIflags\fP не указан \fBAT_EMPTY_PATH\fP. .TP \fBENOMEM\fP Не хватает памяти (например, памяти ядра). .TP \fBENOTDIR\fP Компонент префикса пути \fIpathname\fP содержит относительный путь и \fIdirfd\fP содержит файловый дескриптор, указывающий на файл, а не на каталог. .SH СТАНДАРТЫ Linux. .SH ИСТОРИЯ Linux 4.11, glibc 2.28. .SH "СМ. ТАКЖЕ" \fBls\fP(1), \fBstat\fP(1), \fBaccess\fP(2), \fBchmod\fP(2), \fBchown\fP(2), \fBname_to_handle_at\fP(2), \fBreadlink\fP(2), \fBstat\fP(2), \fButime\fP(2), \fBproc\fP(5), \fBcapabilities\fP(7), \fBinode\fP(7), \fBsymlink\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .