Způsoby platby Abuse

Co dělá příkaz stat v systému Linux

14.11.2021, 16:15

Každý soubor a složka v souborovém systému má tzv. strukturu Inode, ve které jsou uložena metadata tohoto objektu. V ní je uložen vlastník, skupina vlastníků, čas změny, vytvoření a přístup k souboru a další informace. Lze je zobrazit nejen pomocí nástrojů pro ladění souborového systému. Určité informace zobrazuje nástroj ls, ale pokud potřebujete více, můžete použít příkaz stat. Příště si povíme, jak tento příkaz v Linuxu používat.

Co příkaz dělá

Syntaxe příkazu je jednoduchá. Je třeba mu předat volby a cestu k souboru, u kterého chcete zobrazit informace:

$ stat [options] /path/to/file

Není nutné předávat volby a není jich vůbec mnoho:

-L, dereference - zobrazí informace o souboru místo symbolického odkazu;

-f, --file-system - zobrazí informace o souborovém systému, ve kterém je soubor umístěn;

-c, --format- umožňuje zadat výstupní formát místo standardního, každý soubor se vypíše z nového řádku;

--printf - podobně jako --format, pouze pro nový řádek je třeba použít ;

-t, --terse - zobrazí informace ve velmi stručné podobě, na jednom řádku;

--version - zobrazí verzi nástroje.

Podívejme se na několik příkladů použití. Pro zobrazení informací o souboru stačí spustit program bez voleb tak, že mu předáte cestu k souboru, například /etc/passwd:

$ stat /etc/passwd

Výstup programu:

Soubor- cesta k souboru, pro který se informace zobrazují;

Velikost- velikost souboru v bajtech;

IO Block - velikost bloku souborového systému v bajtech;

Blocks- počet bloků souborového systému obsazených souborem;

Device (Zařízení)- identifikátor zařízení, například HDD, na kterém je soubor uložen;

Inode - jedinečné číslo Inode tohoto souboru;

Links- počet pevných odkazů na tento soubor;

Access - přístupová práva k souboru;

Uid - identifikátor a jméno uživatele-vlastníka souboru;

Gid - identifikátor a název skupiny souborů;

Access- čas posledního přístupu k souboru;

Modify- čas poslední změny obsahu souboru;

Changed- čas poslední změny atributů nebo obsahu souboru;

Created(Birth)- vyhrazeno pro zobrazení původního data vytvoření souboru, ale zatím není implementováno.

O formátu času si musíme říci něco více. Například čas posledního přístupu k souboru je 2020-12-02 18:25:01.043831739 +0200. Tento čas se zobrazuje s ohledem na časové pásmo. A čísla +0200 ukazují, že časové pásmo na počítači, který tento soubor vytvořil nebo upravil, je o dvě hodiny delší než UTC, tedy Evropa/Kyjev v zimním čase.

Pokud se pokusíte utilitě předat symbolický odkaz, zobrazí se pouze informace z Inodu samotného odkazu:

$ stat /etc/passwdlin

Chcete-li zobrazit informace o souboru, na který odkaz ukazuje, použijte parametr -L:

$ stat -L /etc/passwdlink

Můžete předat více než jeden soubor:

$ stat /etc/passwd /etc/group

Pro formátování výstupu můžete použít následující sekvence znaků:

Přístupová práva:%A - přístupová práva;

%b - počet obsazených bloků;

%F - typ souboru;

%g - identifikátor skupiny souborů;

%G - název skupiny souborů;

%i - identifikátor inodu;

%n - název souboru;

%s - velikost souboru;

%u - identifikátor vlastníka souboru;

%U - jméno vlastníka souboru;

%x - čas posledního přístupu;

%y - čas poslední změny obsahu;

%z - čas poslední změny obsahu nebo atributů.

Toto nejsou všechny možné sekvence, další najdete v nápovědě nástroje:

$ man stat

Například zobrazme pouze název souboru a čas poslední změny jeho obsahu:

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

Pokud chcete zobrazit informace o souborovém systému, ve kterém se soubor nachází, použijte parametr -f:

$ stat -f /etc/passwd

Podívejme se, co znamenají pole, která nástroj zobrazuje:

Soubor- název souboru;

Typ- typ souborového systému;

ID - identifikátor souborového systému;

Délka názvu(Namelen) - maximální délka názvu v souborovém systému;

Velikostbloku- množství dat v požadavku na čtení nebo zápis pro optimální rychlost;

Základní velikostbloku- fyzická velikost bloku v souborovém systému.

Dále je uveden celkový počet bloků v systému a počet volných bloků.