Главная >> Команды >> Команда stat в Linux

Команда 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 /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/passwdlink

Для того чтобы увидеть информацию о файле, на который указывает ссылка надо использовать опцию -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\n" /etc/passwd /etc/group

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

stat -f /etc/passwd

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

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

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

Выводы

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

Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

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

2 комментария к “Команда stat в Linux”

Оставьте комментарий