Команда stat в Linux

В одной из прошлых статей мы говорили о том, что у каждого файла и папки в файловой системе есть так называемая структура Inode в которой хранятся метаданные этого объекта. Там хранится владелец, группа владельца, время изменения, создания и доступа к файлу, а также другая информация. Её можно увидеть не только с помощью инструментов отладки файловой системы.

Часть из этой информации показывает утилита ls, но если вам нужно больше, то можно воспользоваться командой stat. В этой статье мы рассмотрим как пользоваться этой командой в Linux.

Команда stat в Linux

Синтаксис команды очень простой. Ей надо передать опции и путь к файлу, для которого надо посмотреть информацию:

$ stat опции /путь/к/файлу

Опции передавать не обязательно и их совсем не много:

  • -L, dereference – показывать информацию о файле вместо символической ссылки;
  • -f, –file-system – показывать информацию о файловой системе в которой расположен файл;
  • -c, –format – позволяет указать формат вывода вместо стандартного, каждый файл выводится с новой строки;
  • –printf – аналогично –format, только для новой строки надо использовать \n;
  • -t, –terse – показ информации в очень кратком виде, в одну строку;
  • –version – показать версию утилиты.

Это все опции команды. Теперь давайте разберемся с примерами использования. Чтобы посмотреть информацию о файле достаточно запустить программу без опций передав ей путь к файлу, например /etc/passwd:

Команда stat в Linux

Рассмотрим что означает вывод программы:

  • Файл (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 в Linux

Для того чтобы увидеть информацию о файле, на который указывает ссылка надо использовать опцию -L:

stat -L /etc/passwdlink

Команда stat в Linux

Утилите можно передать не один файл, а несколько:

stat /etc/passwd /etc/group

Команда stat в Linux

И тут уже понадобиться возможность настройки формата вывода. Для форматирования вывода можно использовать такие последовательности символов:

  • %A – права доступа;
  • %b – количество занятых блоков;
  • %F – тип файла;
  • %g – идентификатор группы файла;
  • %G – имя группы файла;
  • %i – идентификатор Inode;
  • %n – имя файла;
  • %s – размер файла;
  • %u – идентификатор владельца файла;
  • %U – имя владельца файла;
  • %x – время последнего доступа;
  • %y – время последней модификации контента;
  • %z – время последнего изменения контента или атрибутов.

Это далеко не все возможные последовательности, больше вы моете найти в справке по утилите:

Например, давайте выведем только имя, файла, и время последней модификации его содержимоего:

stat –printf “File %n has been modified %y\n” /etc/passwd /etc/group

Команда stat в Linux

Если вы хотите посмотреть информацию о файловой системе, в которой расположен файл, то надо использовать опцию -f:

stat -f /etc/passwd

Команда stat в Linux

Давайте рассмотрим что означают поля, которые выводит утилита:

  • Файл (File) – имя файла;
  • Тип (Type) – тип файловой системы;
  • ID – идентификатор файловой системы;
  • Длина имени (Namelen) – максимальная длина имени в файловой системе;
  • Размер блока (Block size) – объем данных при запросе на чтение или запись для оптимальной скорости работы;
  • Базисный размер блока (Fundamental block size) – физический размер блока в файловой системе.

Дальше идут общее количество блоков в системе и количество свободных блоков.

Выводы

Из этой небольшой статьи вы узнали что из себя представляет команда stat Linux. Как видите, это очень полезная команда, позволяющая смотреть низкоуровневую информацию о файлах и файловой системе.

Нет похожих записей

alt=”Creative Commons License” width=”” />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.