Что это за "Итого" в самой первой строке после ls-l? [закрытый]



что такое "всего" в выходных данных 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
1196   4  

4 ответов:

вы можете найти определение этой линии в ls документации для вашей платформы. Ибо coreutilsls (тот, который находится на многих системах Linux), информация может быть найдена через info coreutils ls:

для каждого каталога, который указан, предисловие файлы со строкой "всего блоков" , где блоки-это общее распределение диска для всех файлы в этом каталоге.

Формула: что такое это номер?

в общей сумме int = сумме (physical_blocks_in_use) * physical_block_size/ls_block_size) для каждого файла.

где:

  • ls_block_size - это произвольная переменная окружения (нормально 512 или 1024 байта) которое свободно modifiable с --block-size=<int> флаг ls на POSIXLY_CORRECT=1 GNU окружающая среда переменная (чтобы получить 512-байтовые единицы), или -k флаг в силу Единицы измерения 1кб.
  • physical_block_size - это зависящее от ОС значение внутреннего блочного интерфейса, который может быть подключен или не подключен к базовому оборудованию. Это значение обычно составляет 512b или 1k, но полностью зависит от ОС. Это может быть выявлено через %B значение stat или fstat. обратите внимание, что это значение (почти всегда) не связано с количеством физических блоков на A современные запоминающее устройство.

почему так запутано?

это число довольно отделено от любой физической или значимой метрики. Многие младшие программисты не имели опыта работы с файл дыры или hard / sym links. Кроме того, документация по этому конкретному вопросу практически отсутствует.

разрозненность и двусмысленность термина "размер блока" результат из многочисленных различных мер легко запутаться, и относительно глубокие уровни абстракции вращаются вокруг доступа к диску.

примеры противоречивой информации: du (или ls -s) vs stat

под управлением du * в папке проекта выдает следующее: (Примечание: ls -s возвращает те же результаты.)

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

в общей сумме: 2+2+1+3+3+5+26+4+2+14 = 62 блоки

еще когда один бежит stat мы видим другой набор значений. Работает stat в том же каталоге дает:

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

Итого: 3+3+1+5+6+10+51+8+3+28 = 118 блоки

Примечание: вы можете использовать команду stat * --printf="%b\t(%B)\t%n: %s bytes\n" > чтобы вывести (по порядку) количество блоков, (в паренсе) размер тех блоки, имя файла, размер в байтах, как показано выше.

есть два важные вещи на вынос:

  • stat как сообщает physical_blocks_in_use и physical_block_size как использовано в формуле выше. Обратите внимание, что эти значения основаны на интерфейсах ОС.
  • du обеспечивает то, что принято считать довольно точным оценка использования физического диска.

Для справки -ls -l выше каталога:

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

это общее количество блоков файловой системы, включая косвенные блоки, используемые перечисленными файлами. Если вы запустите ls -s на тех же файлах и суммировать сообщенные номера вы получите тот же номер.

просто упомянуть - вы можете использовать-h (ls-lh), чтобы преобразовать это в удобочитаемом формате.

Comments

    Ничего не найдено.