Начини на плащане Abuse

Какво прави командата stat в Linux

14.11.2021, 16:15

Всеки файл и папка във файловата система има т.нар. структура 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 (Основен размер наблока) - физически размер на блока във файловата система.

Следват общият брой блокове в системата и броят на свободните блокове.