Hver fil og mappe i filsystemet har en såkaldt Inode-struktur, hvor metadataene for dette objekt er gemt. Den gemmer ejer, ejergruppe, tidspunkt for ændring, oprettelse og adgang til filen samt andre oplysninger. Det kan ikke kun ses ved hjælp af fejlfindingsværktøjer til filsystemet. Visse oplysninger vises af ls-værktøjet
, men hvis du har brug for mere, kan du bruge kommandoen stat
. I det følgende fortæller vi, hvordan du bruger denne kommando i Linux.
Kommandoens syntaks er enkel. Den skal have optioner og stien til den fil, du vil se oplysninger om:
$ stat [options] /path/to/file
Det er ikke nødvendigt at angive valgmuligheder, og der er ikke mange af dem:
-L, dereference
- viser filoplysninger i stedet for et symbolsk link;
-f, --file-system
- viser oplysninger om det filsystem, som filen befinder sig i;
-c, --format
- giver dig mulighed for at angive outputformatet i stedet for standardformatet, og hver fil udskrives fra en ny linje;
--printf
- svarer til --format
, men for en ny linje skal du bruge ;
-t, --terse
- viser information i en meget kort form, på én linje;
--version
- viser versionen af værktøjet.
Lad os se nogle eksempler på brug. For at se oplysninger om en fil er det nok at køre programmet uden indstillinger ved at give det stien til filen, f.eks. /etc/passwd
:
$ stat /etc/passwd
Programmets output:
File
- stien til den fil, som oplysningerne vises for;
Størrelse
- filens størrelse i bytes;
IO
Block - størrelsen på filsystemblokken i bytes;
Blocks
- antallet af filsystemblokke, der er optaget af filen;
Device
- identifikation af den enhed, f.eks. HDD, som filen er gemt på;
Inode - unikt inodenummer for denne fil;
Links
- antal hardlinks til denne fil;
Access -
adgangsrettigheder til filen;
Uid
- identifikator og navn på bruger-ejer af filen;
Gid
- identifikator og navn på filgruppen;
Access
- tidspunktet for den seneste adgang til filen;
Modify
- tidspunkt, hvor indholdet af filen sidst blev ændret;
Changed
- tidspunkt for sidste ændring af filens attributter eller indhold;
Created(Birth)
- reserveret til at vise den oprindelige oprettelsesdato for filen, men endnu ikke implementeret.
Vi er nødt til at tale lidt mere om tidsformatet. For eksempel er tidspunktet for sidste adgang til filen 2020-12-02 18:25:01.043831739 +0200. Dette tidspunkt vises under hensyntagen til tidszonen. Og tallene +0200 viser, at tidszonen på den computer, der oprettede eller ændrede denne fil, er to timer længere end UTC, dvs. Europa/Kiev i vintertid.
Hvis du prøver at give værktøjet et symbolsk link, vil det kun vise oplysninger fra selve linkets inode:
$ stat /etc/passwdlin
Hvis du vil se oplysninger om den fil, som linket peger på, skal du bruge indstillingen -L:
$ stat -L /etc/passwdlink
Du kan sende mere end én fil:
$ stat /etc/passwd /etc/group
For at formatere output kan du bruge følgende tegnsekvenser:
%A
- adgangsrettigheder;
%b
- antal besatte blokke;
%F
- filtype;
%g
- filgruppe-identifikator;
%G
- navn på filgruppe;
%i
- inode-identifikator;
%n
- filnavn;
%s
- filstørrelse;
%u
- identifikation af filejer;
%U
- filens ejernavn;
%x
- tidspunkt for sidste adgang;
%y
- tidspunkt for sidste indholdsændring;
%z
- tidspunkt for sidste ændring af indhold eller attributter.
Dette er ikke alle mulige sekvenser, du kan finde flere i hjælpen til værktøjet:
$ man stat
Lad os f.eks. kun vise navnet på en fil og tidspunktet for den sidste ændring af dens indhold:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Hvis du vil se oplysninger om det filsystem, hvor filen er placeret, skal du bruge indstillingen -f
:
$ stat -f /etc/passwd
Lad os se, hvad de felter, som værktøjet viser, betyder:
File
- navnet på filen;
Type
- filsystemets type;
ID
- filsystemets identifikation;
Navnelængde(Namelen)
- den maksimale længde af navnet i filsystemet;
Blokstørrelse
- mængden af data i en læse- eller skriveanmodning for optimal hastighed;
Fundamental block
size - fysisk blokstørrelse i filsystemet.
Dernæst kommer det samlede antal blokke i systemet og antallet af ledige blokke.