Betalningsmetoder Abuse

Vad kommandot stat gör i Linux

14.11.2021, 16:15

Varje fil och mapp i filsystemet har en så kallad Inode-struktur där objektets metadata lagras. Den lagrar ägare, ägargrupp, tid för ändring, skapande och åtkomst till filen, liksom annan information. Det kan inte bara ses med hjälp av felsökningsverktyg för filsystem. Viss information visas av ls-verktyget, men om du behöver mer kan du använda kommandot stat. Nu ska vi berätta hur du använder det här kommandot i Linux.

Vad kommandot gör

Kommandots syntax är enkel. Det behöver skickas alternativ och sökvägen till den fil som du vill se informationen för:

$ stat [options] /path/to/file

Det är inte nödvändigt att skicka alternativ och det finns inte många av dem alls:

-L, dereference - visa filinformation i stället för en symbolisk länk;

-f, --file-system - visar information om det filsystem där filen finns;

-c, --format- gör det möjligt att ange utmatningsformat istället för standardformatet, varje fil matas ut på en ny rad;

--printf - liknar --format, men för en ny rad bör du använda ;

-t, --terse - visar information i mycket kortfattad form, på en rad;

--version - visar versionen av verktyget.

Låt oss se några exempel på användning. För att se information om en fil räcker det med att köra programmet utan alternativ genom att ange sökvägen till filen, t.ex. /etc/passwd:

$ stat /etc/passwd

Programmets utdata:

File- sökvägen till den fil som informationen visas för;

Size- filens storlek i byte;

IO Block - storleken på filsystemets block i byte;

Blocks- antal filsystemblock som upptas av filen;

Device- identifierare för den enhet, t.ex. hårddisk, på vilken filen är sparad;

Inode - unikt Inode-nummer för den här filen;

Länkar- antal hårda länkar till den här filen;

Access - åtkomsträttigheter till filen;

Uid - identifierare och namn på användaren/ägaren av filen;

Gid - identifierare och namn på filgruppen;

Access- tidpunkten för den senaste åtkomsten till filen;

Modify- tidpunkt då innehållet i filen senast ändrades;

Changed- tidpunkt då filattributen eller filinnehållet senast ändrades;

Created(Birth)- reserverad för visning av filens ursprungliga skapelsedatum, men ännu inte implementerad.

Vi måste prata lite mer om tidsformatet. Till exempel är tiden för senaste åtkomst till filen 2020-12-02 18:25:01.043831739 +0200. Den här tiden visas med hänsyn till tidszonen. Och siffrorna +0200 visar att tidszonen på datorn som skapade eller ändrade den här filen är två timmar mer än UTC, dvs. Europa/Kiev på vintertid.

Om du försöker skicka en symbolisk länk till verktyget kommer det bara att visa information från Inode för själva länken:

$ stat /etc/passwdlin

Om du vill se information om den fil som länken pekar på använder du alternativet -L:

$ stat -L /etc/passwdlink

Du kan skicka mer än en fil:

$ stat /etc/passwd /etc/group

För att formatera utdata kan du använda följande teckensekvenser:

%A - åtkomsträttigheter;

%b - antal block som är upptagna;

%F - filtyp;

%g - filgruppsidentifierare;

%G - filgruppsnamn;

%i - inodidentifierare;

%n - filnamn;

%s - filstorlek;

%u - filägaridentifierare;

%U - filägarens namn;

%x - tidpunkt för senaste åtkomst;

%y - tidpunkt för senaste ändring av innehåll;

%z - tidpunkt för senaste ändring av innehåll eller attribut.

Det här är inte alla möjliga sekvenser, du kan hitta fler i verktygets hjälp:

$ man stat

Låt oss till exempel bara visa namnet på en fil och tidpunkten för den senaste ändringen av dess innehåll:

$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group

Om du vill se information om det filsystem där filen finns ska du använda alternativet -f:

$ stat -f /etc/passwd

Låt oss se vad de fält som verktyget visar betyder:

File- namnet på filen;

Typ- filsystemets typ;

ID - filsystemets identifierare;

Namnlängd (Namelen)- den maximala längden på namnet i filsystemet;

Blockstorlek- mängden data i en läs- eller skrivbegäran för optimal hastighet;

Fundamental blockstorlek - fysisk blockstorlek i filsystemet.

Därefter följer det totala antalet block i systemet och antalet lediga block.