У каждого файла и папки в файловой системе есть так называемая структура Inode в которой хранятся метаданные этого объекта. Там хранится владелец, группа владельца, время изменения, создания и доступа к файлу, а также другая информация. Её можно увидеть не только с помощью инструментов отладки файловой системы. Определенная информация показывает утилита ls
, но если вам нужно больше, то можно воспользоваться командой stat
. Дальше расскажем как пользоваться этой командой в Linux.
Синтаксис команды простой. Ей надо передать опции и путь к файлу, для которого надо посмотреть информацию:
$ stat [options] /path/to/file
Опции передавать не обязательно и их совсем не много:
-L, dereference
- показывать информацию о файле вместо символической ссылки;
-f, --file-system
- показывать информацию о файловой системе в которой расположен файл;
-c, --forma
t - позволяет указать формат вывода вместо стандартного, каждый файл выводится с новой строки;
--printf
- аналогично --format
, только для новой строки надо использовать ;
-t, --terse
- показ информации в очень кратком виде, в одну строку;
--version
- показать версию утилиты.
Разберемся с примерами использования. Чтобы посмотреть информацию о файле достаточно запустить программу без опций передав ей путь к файлу, например /etc/passwd
:
$ stat /etc/passwd
Вывод программы:
Файл (File
) - путь к файлу по которому показывается информация;
Размер (Size
) - размер файла в байтах;
Блок В/В (IO Block
) - размер блока файловой системы в байтах;
Блоков (Blocks
) - количество блоков файловой системы, занятых файлом;
Устройство (Device
) - идентификатор устройства, например HDD, на котором сохранён файл;
Inode - уникальный номер Inode этого файла;
Ссылки (Links
) - количество жестких ссылок на этот файл;
Доступ (Access
) - права доступа к файлу;
Uid
- идентификатор и имя пользователя-владельца файла;
Gid
- идентификатор и имя группы файла;
Доступ (Access
) - время последнего доступа к файлу;
Модифицирован (Modify
) - время когда в последний раз изменялся контент файла;
Изменен (Change
) - время, когда в последний раз изменялись атрибуты файла или контент файла;
Создан (Birth
) - зарезервировано для отображения первоначальной даты создания файла, но пока ещё не реализовано.
Надо ещё немного поговорить про формат времени. Например, время последнего доступа к файлу - 2020-12-02 18:25:01.043831739 +0200. Это время показывается с учётом временной зоны. А цифры +0200 показывают, что временная зона на компьютере, который создал или модифицировал этот файл на два часа больше чем UTC, то есть Europe/Kiev в зимнее время.
Если попробовать передать утилите символическую ссылку, то она покажет информацию только из Inode самой ссылки:
$ stat /etc/passwdlin
Чтобы увидеть информацию о файле, на который указывает ссылка надо использовать опцию -L
:
$ stat -L /etc/passwdlink
Можно передать не один файл, а несколько:
$ stat /etc/passwd /etc/group
Для форматирования вывода можно использовать такие последовательности символов:
%A
- права доступа;
%b
- количество занятых блоков;
%F
- тип файла;
%g
- идентификатор группы файла;
%G
- имя группы файла;
%i
- идентификатор Inode;
%n
- имя файла;
%s
- размер файла;
%u
- идентификатор владельца файла;
%U
- имя владельца файла;
%x
- время последнего доступа;
%y
- время последней модификации контента;
%z
- время последнего изменения контента или атрибутов.
Это далеко не все возможные последовательности, больше вы моете найти в справке по утилите:
$ man stat
Например, давайте выведем только имя, файла, и время последней модификации его содержимого:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Если вы хотите посмотреть информацию о файловой системе, в которой расположен файл, то надо использовать опцию -f
:
$ stat -f /etc/passwd
Рассмотрим что означают поля, которые выводит утилита:
Файл (File
) - имя файла;
Тип (Type
) - тип файловой системы;
ID
- идентификатор файловой системы;
Длина имени (Namelen
) - максимальная длина имени в файловой системе;
Размер блока (Block size
) - объем данных при запросе на чтение или запись для оптимальной скорости работы;
Базисный размер блока (Fundamental block size
) - физический размер блока в файловой системе.
Дальше идут общее количество блоков в системе и количество свободных блоков.
Примените скидку, вставив промокод в специальное поле при оформлении заказа: