Всеки файл и папка във файловата система има т.нар. структура Inode, в която се съхраняват метаданните на този обект. В нея се съхраняват собственикът, групата собственици, времето на модификация, създаване и достъп до файла, както и друга информация. Тя може да бъде видяна не само с помощта на инструментите за отстраняване на грешки във файловата система. Определена информация се показва от помощната програма ls
, но ако имате нужда от повече, можете да използвате командата stat
. По-нататък ще ви разкажем как да използвате тази команда в Linux.
Синтаксисът на командата е прост. Необходимо е да й се предадат опции и пътят до файла, за който искате да видите информация:
$ stat [options] /path/to/file
Не е необходимо да се подават опции и те изобщо не са много:
-L, dereference
- показва информация за файла вместо символична връзка;
-f, --file-system
- показва информация за файловата система, в която се намира файлът;
-c, --format
- позволява да се посочи формат на изхода вместо стандартния, като всеки файл се извежда от нов ред;
--printf
- подобно на --format
, само че за нов ред трябва да използвате ;
-t, --terse
- показва информацията в много кратък вид, на един ред;
--version
- показва версията на помощната програма.
Нека да видим някои примери за използване. За да видите информация за даден файл, е достатъчно да стартирате програмата без опции, като й подадете пътя до файла, например /etc/passwd
:
$ stat /etc/passwd
Изходът на програмата:
Файл
- пътят до файла, за който се показва информацията;
Размер
- размерът на файла в байтове;
IO
Block - размерът на блока на файловата система в байтове;
Blocks
- брой на блоковете на файловата система, заети от файла;
Device (Устройство)
- идентификатор на устройството, например HDD, на което е записан файлът;
Inode - уникален Inode номер на този файл;
Връзки
- брой на твърдите връзки към този файл;
Access (Достъп) -
права задостъп до
файла;
Uid
- идентификатор и име на потребителя-собственик на файла;
Gid
- идентификатор и име на файловата група;
Access
- времето на последния достъп до файла;
Modify
- времето, когато съдържанието на файла е било последно променено;
Changed
- времето, когато атрибутите на файла или съдържанието на файла са били променени за последен път;
Created(Birth)
(Създаден(раждане)
) - запазено за показване на първоначалната дата на създаване на файла, но все още не е въведено.
Трябва да поговорим малко повече за формата на времето. Например, времето на последния достъп до файла е 2020-12-02 18:25:01.043831739 +0200. Това време се показва, като се взема предвид часовата зона. А цифрите +0200 показват, че часовата зона на компютъра, който е създал или модифицирал този файл, е с два часа повече от UTC, т.е. Европа/Киев в зимно време.
Ако се опитате да подадете символна връзка на обслужващата програма, тя ще покаже само информацията от Inode на самата връзка:
$ stat /etc/passwdlin
За да видите информация за файла, към който сочи връзката, използвайте опцията -L
:
$ stat -L /etc/passwdlink
Можете да предадете повече от един файл:
$ stat /etc/passwd /etc/group
За да форматирате изхода, можете да използвате следните последователности от символи:
%A
- права на достъп;
%b
- брой заети блокове;
%F
- тип на файла;
%g
- идентификатор на файлова група;
%G
- име на файлова група;
%i
- Идентификатор на възел;
%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
Нека да видим какво означават полетата, които програмата показва:
Файл
- името на файла;
Тип
- тип на файловата система;
ID
- идентификатор на файловата система;
Дължина на името(Namelen
) - максималната дължина на името във файловата система;
Размер наблока
- количеството данни в заявката за четене или запис за оптимална скорост;
Fundamental block
size (Основен
размер наблока
) - физически размер на блока във файловата система.
Следват общият брой блокове в системата и броят на свободните блокове.