Jaki jest total
wynik ls -l
?
$ ls -l /etc
total 3344
-rw-r--r-- 1 root root 15276 Oct 5 2004 a2ps.cfg
-rw-r--r-- 1 root root 2562 Oct 5 2004 a2ps-site.cfg
drwxr-xr-x 4 root root 4096 Feb 2 2007 acpi
-rw-r--r-- 1 root root 48 Feb 8 2008 adjtime
drwxr-xr-x 4 root root 4096 Feb 2 2007 alchemist
Odpowiedzi:
Definicję tej linii można znaleźć w
ls
dokumentacji swojej platformy. W przypadkucoreutils
ls
(tego, który można znaleźć w wielu systemach Linux), informacje można znaleźć pod adreseminfo coreutils ls
:źródło
man ls
w moim systemie nie wspomina o tej linii, aleinfo coreutils ls
tak. Jak przychodziman ls
iinfo coreutils ls
masz różne informacje o tym samym poleceniu? Dlaczego nie jestls
udokumentowane tylko raz? Posiadanie dwóch różnych dokumentacji dla tego samego polecenia wydaje się być skonfigurowane do niepowodzenia.info
Dokumentacja coreutils jest często bardziej szczegółowa niż strony podręcznika systemowego. Dlatego na końcu każdej strony podręcznika mają notatkę odsyłającą do sekcji informacyjnej po więcej szczegółów.info ls
i dałem taki sam wynik jakinfo coreutils ls
. Co robi ta kłótniacoreutils
?Formuła: Co to jest , że liczba?
Dlaczego takie zagmatwane?
Ta liczba jest dość oderwana od wszelkich fizycznych lub znaczących wskaźników. Wielu młodszych programistów nie miało doświadczenia z dziurami w plikach lub dowiązaniami twardymi / sym . Ponadto dokumentacja dostępna na ten konkretny temat praktycznie nie istnieje.
Rozłączność i niejednoznaczność terminu „rozmiar bloku” jest wynikiem wielu różnych miar, które można łatwo pomylić, oraz stosunkowo głębokich poziomów abstrakcji obracających się wokół dostępu do dysku.
Przykłady sprzecznych informacji:
du
(lubls -s
) vs.stat
Uruchomienie
du *
w folderze projektu daje następujące efekty : (Uwaga:ls -s
zwraca te same wyniki).Razem : 2 + 2 + 1 + 3 + 3 + 5 + 26 + 4 + 2 + 14 = 62 bloki
Jednak biegając
stat
, widzimy inny zestaw wartości. Uruchomieniestat
w tym samym katalogu daje:dactyl:~/p% stat * --printf="%b\t(%B)\t%n: %s bytes\n" 3 (512) check.cc: 221 bytes 3 (512) check.h: 221 bytes 1 (512) DONE: 0 bytes 5 (512) Makefile: 980 bytes 6 (512) memory.cc: 2069 bytes 10 (512) memory.h: 4219 bytes 51 (512) p2: 24884 bytes 8 (512) p2.cc: 2586 bytes 3 (512) stack.cc: 334 bytes 28 (512) stack.h: 13028 bytes
Razem: 3 + 3 + 1 + 5 + 6 + 10 + 51 + 8 + 3 + 28 = 118 bloków
Istnieją dwie ważne rzeczy na wynos:
stat
zgłasza zarówno plik, jakphysical_blocks_in_use
iphysical_block_size
jak zostały użyte w powyższym wzorze. Zauważ, że są to wartości oparte na interfejsach systemu operacyjnego.du
przedstawia to, co jest ogólnie akceptowane, jako dość dokładne oszacowanie wykorzystania dysku fizycznego.Dla odniesienia, oto
ls -l
katalog powyżej:źródło
To jest całkowita liczba bloków systemu plików, w tym bloków pośrednich, używanych przez wymienione pliki. Jeśli uruchomisz
ls -s
te same pliki i zsumujesz zgłoszone liczby, otrzymasz tę samą liczbę.źródło
/bin/ls -s
->total 15 2 filename 3 filename2 3 filename3 3 filename4 2 filename5 2 filename6 2 filename8 2 filename9
Wystarczy wspomnieć - możesz użyć -h (ls -lh), aby przekonwertować to na format czytelny dla człowieka.
źródło