stat
drukuj status pliku lub systemu plików
1. stat.1.man
Manpage of STAT
STAT
Section: polecenia użytkownika (1)Updated: lipiec 2002
Index Return to Main Contents
NAZWA
stat - drukuj status pliku lub systemu plikówSKŁADNIA
stat [OPCJA] PLIK...OPIS
Wyświetla status pliku lub systemu plików
- -f, --filesystem
- wyświetla informacje o stanie systemu plików, a nie o stanie pliku
- -c --format=FORMAT
- używa podanego FORMATU zamiast formatu domyślnego
- -l, --dereference
- podąża za linkami
- -t, --terse
- wyświetla informacje w zwięzłej postaci
- --help
- wyświetla pomoc i kończy działanie
- --version
- wyświetla informacje o wersji i kończy działanie
Poprawne sekwencje formatu dla plików (jeżeli nie podano opcji --filesystem):
-
%A - prawa dostępu w formie czytelnej dla człowieka
%a - prawa dostępu ósemkowo
%b - liczba zaalokowanych bloków
%D - numer urządzenia szesnastkowo
%d - numer urządzenia w systemie dziesiętnym
%F - typ pliku
%f - tryb pliku szesnastkowo
%G - nazwa grupy, która jest właścicielem pliku
%g - identyfikator grupy, która jest właścicielem pliku
%h - liczba twardych dowiązań
%i - numer węzła (inode)
%N - nazwa pliku w apostrofach ze wskazaniem linków symbol.
%n - nazwa pliku
%o - rozmiar bloku wejścia/wyjścia
%s - całkowity rozmiar w bajtach
%T - poboczny (minor) typ urządzenia szesnastkowo
%t - główny (major) typ urządzenia szesnastkowo
%U - nazwa właściciela pliku
%u - identyfikator właściciela pliku
%X - czas ostatniego dostępu podany jako liczba sekund od epoki
%x - czas ostatniego dostępu
%Y - czas ostatniej modyfikacji jako liczba sekund od epoki
%y - czas ostatniej modyfikacji
%Z - czas ostatniej zmiany podany jako liczba sekund od epoki
%z - czas ostatniej zmiany
Poprawne sekwencje formatu dla systemów plików:
-
%a - liczba wolnych bloków dostępnych dla nie-administratorów
%b - całkowita liczba bloków danych w systemie plików
%c - całkowita liczba węzłów w systemie plików
%d - liczba wolnych węzłów w systemie plików
%f - liczba wolnych bloków w systemie plików
%i - identyfikator systemu plików szesnastkowo
%l - maksymalna długość nazw plików
%n - nazwa pliku
%s - optymalny rozmiar bloku przy transferze
%T - typ w formie czytelnej dla człowieka
%t - typ szesnastkowo
AUTOR
Napisane przez Michaela Meskesa.ZGŁASZANIE BŁĘDÓW
Prosimy zgłaszać błędy do <bug-fileutils@gnu.org>.PRAWA AUTORSKIE
Copyright © 2002 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ZOBACZ TAKŻE
Pełna dokumentacja programu stat jest utrzymywana w postaci podręcznika texinfo. Jeżeli programy info i stat zostały poprawnie zainstalowane, to za pomocą polecenia- info stat
można uzyskać dostęp do pełnej wersji podręcznika.
Index
This document was created by man2html using the manual pages.
Time: 00:25:15 GMT, November 20, 2008
2. stat.2.man
Manpage of STAT
STAT
Section: Podręcznik programisty Linuksa (2)Updated: 2004-06-23
Index Return to Main Contents
NAZWA
stat, fstat, lstat - pobiera status plikuSKŁADNIA
#include <sys/types.h>#include <sys/stat.h>
#include <unistd.h>
int stat(const char *path, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *path, struct stat *buf);
OPIS
Funkcje te zwracają informacje o podanym pliku. Do uzyskania tej informacji nie są wymagane prawa dostępu do samego pliku, lecz --- w przypadku stat() i lstat() --- konieczne są prawa wykonywania (przeszukiwania) do wszystkich katalogów na prowadzącej do pliku ścieżce path.
stat() zwraca status pliku wskazywanego przez path, ładując go do argumentu buf.
lstat() jest identyczny z stat(), lecz w przypadku gdy path jest linkiem symbolicznym, to zwraca status tego linka, a nie pliku, do którego się ten link odwołuje.
fstat() jest identyczny z stat(), z tym wyjątkiem, że plik, którego status ma zwrócić, jest określony przez deskryptor pliku filedes.
Wszystkie te funkcje zwracają strukturę stat, zawierającą następujące pola:
-
struct stat { dev_t st_dev; /* ID urządzenia zawierającego plik */ ino_t st_ino; /* numer i-węzła (inode) */ umode_t st_mode; /* ochrona */ nlink_t st_nlink; /* liczba dowiązań stałych (hardlinks) */ uid_t st_uid; /* ID użytkownika właściciela */ gid_t st_gid; /* ID grupy właściciela */ dev_t st_rdev; /* ID urządzenia (jeśli plik specjalny) */ off_t st_size; /* całkowity rozmiar w bajtach */ blksize_t st_blksize; /* wielkość bloku dla I/O systemu plików */ blkcnt_t st_blocks; /* liczba zaalokowanych bloków */ time_t st_atime; /* czas ostatniego dostępu */ time_t st_mtime; /* czas ostatniej modyfikacji */ time_t st_ctime; /* czas ostatniej zmiany */ };
Pole st_dev określa urządzenie, na którym plik się znajduje.
Pole st_rdev opisuje urządzenie reprezentowane przez ten plik (i-węzeł).
Pole st_size podaje rozmiar pliku w bajtach (jeżeli plik jest regularny lub jest dowiązaniem symbolicznym). Rozmiarem dowiązania symbolicznego jest długość ścieżki, na którą wskazuje, z wyłączeniem końcowego bajtu null.
Pole st_sblocks określa liczbę bloków zajmowanych przez plik w jednostkach 512-bajtowych. (Liczba ta może być mniejsza niż st_size/512, na przykład wtedy, gdy plik ma dziury).
Pole st_blksize zawiera "preferowany" rozmiar bloku dla efektywnych operacji wejścia/wyjścia dla pliku (Zapis do pliku mniejszych kawałków może spowodować nieefektywne operacje odczyt-modyfikacja-powtórny zapis).
Nie wszystkie systemy plików pod Linuksem obsługują wszystkie pola czasu. Niektóre systemy plików można zamontować w ten sposób, że dostęp do pliku nie powoduje uaktualnienia pola st_atime. (Patrz `noatime' w mount(8)).
Pole st_atime jst zmieniane przez dostęp do pliku, np. przez execve(2), mknod(2), pipe(2), utime(2) i read(2) (w razie odczytania więcej niż zera bajtów). Inne procedury, jak mmap(2) mogą, ale nie muszą, zmienić st_atime.
Zazwyczaj pole st_mtime jest zmieniane przez modyfikowanie pliku, np. przez mknod(2), truncate(2), utime(2) i write(2) (więcej niż zero bajtów). Co więcej st_mtime katalogu jest zmieniane przy tworzeniu plików w tym katalogu lub ich usuwaniu. Pole st_mtime nie jest zmieniane po zmianach właściciela, grupy, liczby twardych linków (hardlinks) czy praw dowiązań.
Pole st_ctime jest zmieniane przy zapisywaniu lub ustawianiu informacji i-węzła (np. właściciela, grupy, liczby dowiązań, praw itp.).
Zdefiniowane są następujące makra POSIX sprawdzające typ pliku przy użyciu pola st_mode:
-
- S_ISREG(m)
- czy plik jest regularny?
- S_ISDIR(m)
- katalog?
- S_ISCHR(m)
- urządzenie znakowe?
- S_ISBLK(m)
- urządzenie blokowe?
- S_ISFIFO(m)
- kolejka FIFO (potok nazwany)?
- S_ISLNK(m)
- dowiązanie symboliczne? (Nie w POSIX.1-1996).
- S_ISSOCK(m)
- gniazdo? (Nie w POSIX.1-1996).
Dla pola st_mode zdefiniowano następujące flagi:
| S_IFMT | 0170000 | maska bitowa dla pól bitowych typu pliku |
| S_IFSOCK | 0140000 | gniazdo |
| S_IFLNK | 0120000 | dowiązanie symboliczne (symbolic link) |
| S_IFREG | 0100000 | plik regularny |
| S_IFBLK | 0060000 | urządzenie blokowe |
| S_IFDIR | 0040000 | katalog |
| S_IFCHR | 0020000 | urządzenie znakowe |
| S_IFIFO | 0010000 | kolejka FIFO |
| S_ISUID | 0004000 | bit `set UID' |
| S_ISGID | 0002000 | bit `set-group-ID' (patrz niżej) |
| S_ISVTX | 0001000 | bit `sticky' (patrz niżej) |
| S_IRWXU | 00700 | maska praw dostępu właściciela pliku |
| S_IRUSR | 00400 | właściciel ma prawa odczytu |
| S_IWUSR | 00200 | właściciel ma prawa zapisu |
| S_IXUSR | 00100 | właściciel ma prawa wykonania |
| S_IRWXG | 00070 | maska praw dostępu dla grupy |
| S_IRGRP | 00040 | grupa ma prawa odczytu |
| S_IWGRP | 00020 | grupa ma prawa zapisu |
| S_IXGRP | 00010 | grupa ma prawa wykonania |
| S_IRWXO | 00007 | maska uprawnień dla innych (poza grupą) |
| S_IROTH | 00004 | inni mają prawa odczytu |
| S_IWOTH | 00002 | inni mają prawa zapisu |
| S_IXOTH | 00001 | inni mają prawa wykonania |
UWAGI LINUKSOWE
Od wersji jądra struktura stat obsługuje nanosekundową dokładność wszystkich trzech pól czasowych. Glibc podaje nanosekundową część każdego z tych pól, używając albo st_atim.tv_nsec, jeżeli zdefiniowano makro _BSD_SOURCE lub _SVID_SOURCE, albo st_atimensec, jeżeli nie zdefiniowano żadnego z tych makr. W systemach plików, które nie obsługują takiej dokładności czasowej, wartości nanosekund w tych polach wynoszą 0.Dla większości plików w katalogu /proc, stat() w polu st_size zwraca 0, a nie rzeczywisty rozmiar pliku.
WARTOŚĆ ZWRACANA
Po sukcesie zwracane jest zero. Po błędzie -1 i ustawiane jest errno.BŁĘDY
- EACCES
- Brak uprawnień do przeszukiwania jednego z katalogów w ścieżce zaczynającej path. (Patrz także path_resolution(2)).
- EBADF
- filedes jest nieprawidłowy.
- EFAULT
- Niepoprawny adres.
- ELOOP
- Podczas rozwiązywania ścieżki napotkano zbyt wiele dowiązań symbolicznych.
- ENAMETOOLONG
- Zbyt długa nazwa pliku.
- ENOENT
- Składnik ścieżki path nie istnieje lub ścieżka jest pustym łańcuchem znaków.
- ENOMEM
- Brak pamięci (tj. pamięci jądra).
- ENOTDIR
- Składnik ścieżki nie jest katalogiem.
ZGODNE Z
Funkcje stat() i fstat() są zgodne z SVr4, SVID, POSIX, X/OPEN, 4.3BSD. Funkcja lstat() jest zgodna z 4.3BSD i SVr4. SVr4 dokumentuje następujące dodatkowe błędy fstat(): EINTR, ENOLINK i EOVERFLOW. SVr4 dokumentuje następujące dodatkowe błędy stat() i lstat(): EINTR, EMULTIHOP, ENOLINK i EOVERFLOW. Używanie pól st_blocks i st_blksize może być mało przenośne. (Zostały wprowadzone w BSD, nie są podawane przez POSIX. Interpretacja różni się między systemami, a nawet na jednym systemie, jeżeli zaangażowane są montowania NFS).Standard POSIX nie opisuje bitów S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX, ale zamiast tego wymaga używania makr S_ISDIR(), itp. Makra S_ISLNK i S_ISSOCK nie występują w POSIX.1-1996, ale oba będą w następnej wersji standardu POSIX; pierwsze z tych makr jest wzięte z SVID, a drugie z SUSv2.
Unix V7 (i kolejne systemy) miał S_IREAD, S_IWRITE, S_IEXEC, podczas gdy POSIX nakazuje używanie S_IRUSR, S_IWUSR, S_IXUSR.
INNE SYSTEMY
Wartości, które były (lub nadal są) w użyciu w różnych systemach:| szesnastkowo | nazwa | ls | ósemkowo | opis |
| f000 | S_IFMT | 170000 | maska bitowa dla pól bitowych typu pliku | |
| 0000 | 000000 | niedziałający i-węzeł w SCO, nieznany typ w BSD | ||
| SVID-v2 i XPG2 mają zarówno 0, jak i 0100000 dla zwykłego pliku | ||||
| 1000 | S_IFIFO | p| | 010000 | kolejka FIFO (potok nazwany) |
| 2000 | S_IFCHR | c | 020000 | specjalny znakowy (V7) |
| 3000 | S_IFMPC | 030000 | specjalny znakowy zwielokrotniony (V7) | |
| 4000 | S_IFDIR | d/ | 040000 | katalog (V7) |
| 5000 | S_IFNAM | 050000 | nazwany plik specjalny XENIXa | |
| z dwoma podtypami, rozróżnianymi przez wartości 1,2 w st_rdev: | ||||
| 0001 | S_INSEM | s | 000001 | podtyp IFNAM semafora XENIX |
| 0002 | S_INSHD | m | 000002 | podtyp IFNAM dzielonych danych XENIX |
| 6000 | S_IFBLK | b | 060000 | specjalny blokowy (V7) |
| 7000 | S_IFMPB | 070000 | specjalny blokowy zwielokrotniony (V7) | |
| 8000 | S_IFREG | - | 100000 | regularny (V7) |
| 9000 | S_IFCMP | 110000 | skompresowany VxFS | |
| 9000 | S_IFNWK | n | 110000 | sieciowy specjalny (HP-UX) |
| a000 | S_IFLNK | l@ | 120000 | dowiązanie symboliczne (BSD) |
| b000 | S_IFSHAD | 130000 | shadow i-węzeł ACL w Solarisie (niedost. w przestrz. użytkow.) | |
| c000 | S_IFSOCK | s= | 140000 | gniazdo (BSD; także "S_IFSOC" na VxFS) |
| d000 | S_IFDOOR | D> | 150000 | drzwi Solarisa |
| e000 | S_IFWHT | w% | 160000 | BSD whiteout (nieużywane dla i-węzła) |
| 0200 | S_ISVTX | 001000 | `bit sticky': zachowaj wyswappowany tekst nawet po użyciu(V7) | |
| zarezerwowane (SVID-v2) | ||||
| Dla niekatalogów: nie buforuj tego pliku (SunOS) | ||||
| Dla katalogów: flaga ograniczonego usuwania (SVID-v4.2) | ||||
| 0400 | S_ISGID | 002000 | set-group-ID podczas wykonywania (V7) | |
| dla katalogów: używaj semantyki BSD propagowania ID grupy | ||||
| 0400 | S_ENFMT | 002000 | egzekwowanie blokowanie plików SysV (dzielone z S_ISGID) | |
| 0800 | S_ISUID | 004000 | set-user-ID podczas wykonywania (V7) | |
| 0800 | S_CDF | 004000 | katalog jest plikiem zależnym od kontekstu (HP-UX) |
Polecenie `sticky' pojawiło się w wersji32V systemu AT&T UNIX.
ZOBACZ TAKŻE
chmod(2), chown(2), fstatat(2), readlink(2), utime(2), capabilities(7)
Index
This document was created by man2html using the manual pages.
Time: 00:25:15 GMT, November 20, 2008


