Введение
stat
— это утилита командной строки, которая отображает подробную информацию об определенных файлах или файловых системах.
В этой статье объясняется, как использовать команду stat
в Linux.
Использование команды Стат.
Синтаксис команды stat
следующий:
stat [OPTION]... FILE...
stat
принимает одно или несколько входных имен FILE
и включает в себя набор опций, управляющих поведением и выводом команды.
Давайте посмотрим на следующий пример:
stat mylog.log
Вывод будет выглядеть следующим образом:
File: mylog.log
Size: 1239291 Blocks: 2424 IO Block: 512 regular file
Device: 2h/2d Inode: 24769797950641873 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/piero) Gid: ( 1000/piero)
Access: 2019-09-28 20:01:33.130738600 +0200
Modify: 2019-08-08 03:04:23.000000000 +0200
Change: 2019-09-28 20:01:33.143704400 +0200
Birth: -
При вызове без каких-либо параметров отображается следующая информация о файле:
- Файл: имя файла.
- Размер: размер файла в байтах.
- Блоки: количество выделенных блоков, полученных из файла.
- Блок ввода-вывода — размер в байтах каждого блока.
- Тип файла - (например, обычный файл, каталог, символическая ссылка...)
- Устройство: номер устройства в шестнадцатеричном и десятичном формате.
- Inode: номер узла.
- Ссылки: количество реальных ссылок.
- Доступ: права доступа к файлам числовыми и символьными методами.
- Uid: идентификатор пользователя и имя владельца.
- Gid: идентификатор группы и имя владельца.
- Контекст — контекст безопасности SELinux.
- Доступ: время последнего доступа к файлу.
- Редактировать: время последнего изменения содержимого файла.
- Редактировать: время последнего изменения атрибута или содержимого файла.
- Рождение: время создания файла (не поддерживается в Linux).
Просмотр информации о файловой системе
Чтобы получить информацию о файловой системе, в которой находится указанный файл, а не информацию о самом файле, используйте параметр -f
( --file-system
):
stat -f mylog.log
Вывод команды будет выглядеть так:
File: "mylog.log"
ID: 100000000 Namelen: 255 Type: wslfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 60884223 Free: 40801995 Available: 40801995
Inodes: Total: 999 Free: 1000000
Когда stat
вызывается с параметром -f
, он отображает следующую информацию:
- Файл: имя файла.
- ID: идентификатор файловой системы в шестнадцатеричном формате.
- Namelen — максимальная длина имен файлов.
- Основной размер блока: Размер каждого блока в файловой системе.
- Блокировки: - Всего - общее количество блокировок в файловой системе. Free — количество свободных блоков в файловой системе. Доступно: количество свободных блоков, доступных для пользователей без полномочий root.
- Inodes: Total — общее количество инодов в файловой системе. Free — количество свободных инодов в файловой системе.
Разыменование (следовать) Симлинк
По умолчанию stat
не переходит по символическим ссылкам. Если вы запустите команду для символической ссылки, вывод будет включать информацию о символической ссылке, а не о файле, на который она указывает:
stat /etc/resolv.conf
File: /etc/resolv.conf ->../run/resolvconf/resolv.conf
Size: 29 Blocks: 0 IO Block: 512 symbolic link
Device: 2h/2d Inode: 562949953739123 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/root) Gid: ( 0/root)
Access: 2019-08-01 22:25:40.458719400 +0200
Modify: 2019-08-01 22:25:40.458719400 +0200
Change: 2019-08-01 22:25:40.458719400 +0200
Birth: -
Чтобы разыменовать (перейти) символическую ссылку и отобразить информацию о файле, на который указывает символическая ссылка, используйте параметр -L
( --dereference
):
stat -L /etc/resolv.conf
File: /etc/resolv.conf
Size: 195 Blocks: 0 IO Block: 512 regular file
Device: 7h/7d Inode: 1970324837678224 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/root) Gid: ( 0/root)
Access: 2019-11-07 23:52:30.624839800 +0100
Modify: 2019-11-07 23:52:30.640820100 +0100
Change: 2019-11-07 23:52:30.640820100 +0100
Birth: -
Настройка вывода
Команда stat
имеет две опции, которые позволяют настроить вывод в соответствии с вашими потребностями: -c
( --format="format"
) и --printf="format"
.
Разница между этими двумя опциями заключается в том, что когда в качестве операторов используются два или более файла, --format
автоматически добавляет новую строку после вывода каждого операнда. Опция --printf
интерпретирует обратную косую черту.
Существует множество директив форматов файлов и файловых систем, которые можно использовать с параметрами --format
и --printf
.
Например, чтобы просмотреть только тип файла, используйте:
stat --format="%F" /dev/null
character special file
Вы можете комбинировать любое количество директив форматирования и при необходимости использовать настраиваемые разделители между ними. Разделителем может быть одиночный символ или строка:
stat --format="%n,%F" /dev/null
/dev/null,character special file
Чтобы интерпретировать специальные символы, такие как новая строка или табуляция, используйте параметр --printf
:
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
напечатать новую строку:
Name: /etc
Permissions: 755
stat
также может отображать информацию в краткой форме. Этот формат полезен для анализа другими утилитами.
Вызовите команду с параметром -t
( --terse
), чтобы распечатать вывод в краткой форме:
stat -t /etc
/etc 512 0 41ed 0 0 2 562949953701446 1 0 0 1558449784 1573167150 1573167150 0 512
Для получения полного списка всех директив формата для файлов и типов файловых систем используйте команды man stat
или stat --help
в терминале.
Вывод
Команда stat
выводит информацию об определенных файлах и файловых системах.
В Linux есть много других команд, которые могут отображать информацию об определенных файлах, наиболее часто используемой является ls
, но она отображает только часть информации, предоставляемой командой stat
.