Как получить физический размер файла в Linux?

Вы можете попытаться использовать такие инструменты, как htop , и отсортировать их по загрузке ЦП / использованию ОЗУ / времени ЦП.

sudo apt-get install htop && htop

Вы также можете использовать iotop для проверки любых узких мест, связанных с вводом-выводом,

sudo apt-get install iotop && sudo iotop

или

sudo iotop -P --only
12
04.01.2020, 01:43
2 ответа

ls -lдаст вам кажущийся размер файла, то есть число байтов, которое программа прочитает, если прочитает файл от начала до конца. duдаст вам размер файла «на диске».

По умолчанию duдает вам размер файла в количестве дисковых блоков, но вместо этого вы можете использовать -h, чтобы получить удобочитаемую единицу измерения. См. также руководство для duвашей системы.

Обратите внимание, что с GNU coreutil du(, который, вероятно, используется в Linux ), использование -bдля получения байтов подразумевает опцию --apparent-size. Это не то, что вы хотите использовать, чтобы получить количество байтов, фактически используемых на диске. Вместо этого используйте --block-size=1или -B 1.

В GNU lsвы также можете выполнить ls -s --block-size=1над файлом. Это даст тот же номер, что и du -B 1для файла.


Пример:

$ ls -l file
-rw-r--r--  1 myself wheel  536870912 Apr  8 11:44 file

$ ls -lh file
-rw-r--r--  1 myself wheel   512M Apr  8 11:44 file

$ du -h file
24K    file

$ du -B 1 file
24576   file

$ ls -s --block-size=1 file
24576 file

Это означает, что это файл размером 512 МБ, который занимает на диске около 24 КБ. Это разреженный файл (в основном нули, которые на самом деле не записываются на диск, а представлены как логические «дыры» в файле ). Разреженные файлы распространены при работе с предварительно -выделенными большими файлами, например. образы дисков для виртуальных машин или файлы подкачки и т. д. Создать разреженный файл можно быстро, а заполнять его нулями — медленно (и не нужно ).

См. также руководство для fallocateв вашей системе Linux.

36
27.01.2020, 19:54

Я получаю размер файла в байтах следующим образом:

actualsize=$(du -b "${file}" | cut -f 1)
6
27.01.2020, 19:54

Теги

Похожие вопросы