Naredbe za koje (možda) niste znali 13: stat
Naredba stat nam omogućava dobijanje informacija o datotekama, kao što su veličina, vrijeme kreiranja, promjene i pristupa, inode broja i slično. Sve ovo možete saznati i preko naredbe ls, ali stat daje sve ove informacije odjednom, pa je u nekim situacijama prikladnija. Stat je, zapravo, prilagodba sistemskog poziva stat(), ali i funkcije koja se pojavljuje u većini programskih jezika.
Pogledajmo ispis naredbe stat, na istoj datoteci koju smo rabili u članku o naredbi touch:
debian# stat datoteka.log
File: 'datoteka.log'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 806h/2054d Inode: 30916 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 1999-10-10 10:10:00.000000000 +0200
Modify: 1999-10-10 10:10:00.000000000 +0200
Change: 2010-03-23 14:02:42.000000000 +0100
Vidimo mnoštvo informacija, kao što je veličina (ovdje je 0, kao i broj blokova koji zauzima datoteka). Naredba prepoznaje veličinu 0, pa ispisuje "regular empty file", inače bi riječ "empty" bila izostavljena.
Nadalje, ispisuju nam se podaci o uređaju u heksadecimalnom obliku, te inode broj. Inode je broj jedinstven za svaku datoteku i direktorij na datotečnom sustavu. Vrijednost "Links" označava koliko hard linkova na tu datoteku postoji, a u ovom slučaju to je samo jedan - njen vlastiti. Simbolički linkovi se ne ubrajaju u ovu vrijednost.
Sljedeće što ćemo saznati su prava pristupa, u oktalnom i simboličkom obliku, kao i tko je vlasnik i grupa datoteke (opet, u numeričkom i simboličkom obliku).
Zadnje što ćemo saznati su vremena pristupa ("Access"), promjene ("Modify") i promjene inodea ("Change"). Drugim riječima, ATIME, CTIME i MTIME. Ovo zaslužuje malo pojašnjenja.
ATIME, ili "Access Time", je vrijeme zadnjeg pristupa datoteci. Ovo uključuje uređivanje i pregledavanje preko naredbi cat, less i sličnih, te promjenu atributa datoteke. Vrijeme zadnjeg pristupa možete vidjeti i preko naredbe ls, u obliku "ls -lu". Osvježavanje zadnjeg pristupa datoteci ponešto smanjuje performanse, a kako taj podatak obično nema neku vrijednost, sistem administratori znaju isključiti generiranje ovog zapisa kako bi dobili na performansama datotečnog sustava.
CTIME, ili "Change Time", nikako ne treba brkati s pojmom "Creation Time". Ovaj podatak na Unix/Linux sustavima zapravo ne možemo doznati. CTIME se odnosi na vrijeme promjene podataka u datoteci, ali i promjene na inode broju (ovo uključuje promjenu vlasnika ili prava pristupa preko chown/chmod naredbi). Vrijeme zadnje promjene možete vidjeti i preko naredbe ls, u obliku "ls -lc".
MTIME, ili "Modification Time", se mijenja kad se mijenja sadržaj datoteke. Ovo vrijeme je podrazumijevano kada rabite naredbu ls u proširenom obliku, "ls -l". Ovo je vjerojatno vrijednost koja vam je najzanimljivija.
Kako je preko primjera najlakše shvatiti sve gore izrečeno, navest ćemo tipične primjere iz prakse.
debian# stat datoteka.log
Access: 1999-10-10 10:10:00.000000000 +0200
debian# cat datoteka.log
debian# stat datoteka.log
Access: 2010-03-24 15:01:28.000000000 +0100
Vidimo da se promijenilo vrijeme zadnjeg pristupa datoteci (ATIME).
debian# chmod g+wx datoteka.log
Modify: 1999-10-10 10:10:00.000000000 +0200
Change: 2010-03-24 15:05:33.000000000 +0100
Ukoliko promjenimo prava pristupa, što automatski znači i promjenu pripadajućeg inodea, promijenili smo CTIME, ne i MTIME.
Promijenimo sada sadržaj same datoteke:
debian# echo "Sadrzaj" > datoteka.log
debian# stat datoteka.log
Modify: 2010-03-24 15:09:36.000000000 +0100
Change: 2010-03-24 15:09:36.000000000 +0100
Možemo vidjeti da se promijenilo i vrijeme CTIME i MTIME.
Stat prepoznaje i druge tipove datoteka, kao što su direktoriji, socketi, linkovi i tako dalje, te će tu informaciju i ispisati:
debian# stat /dev/null
File: '/dev/null'
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: dh/13d Inode: 97777566 Links: 1 Device type: 1,3
. . .
Vidimo da je stat ispravno prepoznao datoteku /dev/null kao "character special file".
Moguće je dobiti informacije o datotečnom sustavu, umjesto o pojedinoj datoteci. Za to ćemo upotrijebiti opciju "-f":
debian# stat -f /
File: "/"
ID: f72aeed7c2b49bfd Namelen: 255 Type: ext2/ext3
Block size: 1024 Fundamental block size: 1024
Blocks: Total: 248895 Free: 118437 Available: 105585
Inodes: Total: 64512 Free: 51266
Na kraju, ispis naredbe stat je moguće prilagoditi svojim potrebama, što je zgodno za pisanje skripti. Primjer:
debian# stat --format "%a %A" datoteka.log
674 -rw-rwxr--
Naredbi stat smo rekli da ispiše samo prava pristupa datoteci, i to prvo u oktalnom zapisu, a potom i simboličkom. Što možete sve koristiti kao format pročitajte u man stranici, jer je opcija zaista mnogo.
Napomena: u vašoj ljusci (shellu) može postojati ugrađena naredba stat, pa provjerite o kojoj naredbi se točno radi (zsh ljuska ima svoju inačicu u vidu dodatnog modula).
Stat je dio paketa coreutils.
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version