Co to jest "total" w pierwszej linijce po ls-l? [zamknięte]
Co to jest "Suma" w wyjściu 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
4 answers
Możesz znaleźć definicję tego wiersza w dokumentacji ls
dla swojej platformy. Na coreutils
ls
(ten, który można znaleźć na wielu systemach linuksowych), informacje można znaleźć poprzez info coreutils ls
:
Dla każdego katalogu, który jest wymieniony, poprzedzaj pliki linią 'total BLOCKS', gdzie bloki to całkowita alokacja dysków dla wszystkich pliki w tym katalogu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-13 12:18:59
Wzór: co to jest że liczba?
Razem int = suma (physical_blocks_in_use) * physical_block_size/ls_block_size) dla każdego pliku.
Gdzie:
ls_block_size
jest arbitralną zmienną środowiskową (Zwykle 512 lub 1024 bajtów), która jest dowolnie modyfikowana za pomocą--block-size=<int>
flaga nals
,POSIXLY_CORRECT=1
GNU zmienna środowiskowa (aby uzyskać 512-bajtowe jednostki), lub znacznik-k
, aby wymusić 1kB jednostki.- {[8] } jest zależną od systemu operacyjnego wartością wewnętrznego interfejsu blokowego, który może lub nie może być podłączony do podstawowego sprzętu. Wartość ta zwykle wynosi 512b lub 1k, ale jest całkowicie zależna od systemu operacyjnego. Można go ujawnić poprzez
%B
wartość nastat
lubfstat
. zauważ, że ta wartość jest (prawie zawsze) niezwiązana z liczbą fizycznych bloków na nowoczesnym urządzeniu pamięci masowej.
Dlaczego tak mylące?
Liczba ta jest dość oderwany od jakiejkolwiek fizycznej lub znaczącej metryki. Wielu młodszych programistów nie miało doświadczenia z otworami plików lub twardymi linkami/sym. Ponadto dokumentacja dostępna na ten konkretny temat praktycznie nie istnieje.
Niespójność i niejednoznaczność terminu"rozmiar bloku" była wynikiem wielu różnych miar, które można łatwo pomylić, a stosunkowo głębokie poziomy abstrakcji obracające się wokół dysku dostęp.
Przykłady sprzecznych informacji: du
(lub ls -s
) vs stat
Uruchomienie du *
w folderze projektu daje następujące rezultaty: (Uwaga: ls -s
zwraca te same wyniki.)
dactyl:~/p% du *
2 check.cc
2 check.h
1 DONE
3 Makefile
3 memory.cc
5 memory.h
26 p2
4 p2.cc
2 stack.cc
14 stack.h
Ogółem: 2+2+1+3+3+5+26+4+2+14 = 62 Bloki
Jednak gdy uruchomimy stat
widzimy inny zestaw wartości. Uruchomienie stat
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
Ogółem: 3+3+1+5+6+10+51+8+3+28 = 118 Bloki
Uwaga: możesz użyć polecenia
stat * --printf="%b\t(%B)\t%n: %s bytes\n"
> aby wypisać (w kolejności) liczbę bloków, (w nawiasach) Rozmiar tych bloków bloki, nazwę pliku i rozmiar w bajtach, jak pokazano powyżej.
Są dwie ważne rzeczy:
-
stat
zgłasza zarównophysical_blocks_in_use
, jak iphysical_block_size
zgodnie z powyższym wzorem. Zauważ, że są to wartości oparte na interfejsach systemu operacyjnego. -
du
dostarcza to, co jest powszechnie akceptowane jako dość dokładne oszacowanie fizycznego wykorzystania dysku.
Dla odniesienia, oto ls -l
z katalogu Powyżej:
dactyl:~/p% ls -l
**total 59**
-rw-r--r--. 1 dhs217 grad 221 Oct 16 2013 check.cc
-rw-r--r--. 1 dhs217 grad 221 Oct 16 2013 check.h
-rw-r--r--. 1 dhs217 grad 0 Oct 16 2013 DONE
-rw-r--r--. 1 dhs217 grad 980 Oct 16 2013 Makefile
-rw-r--r--. 1 dhs217 grad 2069 Oct 16 2013 memory.cc
-rw-r--r--. 1 dhs217 grad 4219 Oct 16 2013 memory.h
-rwxr-xr-x. 1 dhs217 grad 24884 Oct 18 2013 p2
-rw-r--r--. 1 dhs217 grad 2586 Oct 16 2013 p2.cc
-rw-r--r--. 1 dhs217 grad 334 Oct 16 2013 stack.cc
-rw-r--r--. 1 dhs217 grad 13028 Oct 16 2013 stack.h
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:42
To całkowita liczba bloków systemu plików, w tym bloków pośrednich, używanych przez wymienione pliki. Jeśli uruchomisz ls -s
Na tych samych plikach i zsumujesz zgłoszone liczby, otrzymasz ten sam numer.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-13 12:19:19
Tylko wspomnieć-możesz użyć-h (ls-lh), aby przekonwertować to w formacie czytelnym dla człowieka.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-13 13:21:19