Я запутался с выводом команды 'du' в Linux

21

Я создаю файл с именем file.o, я хочу проверить размер файла file.o.

du -h file.o ====> 4.0K

du -b file.o ====> 1120

согласно du -b file.o, я узнаю, что file.o имеет размер 1120 байт. Но почему du -h file.oвыводит 4.0K (значит 4 * 1024 байта)?

Джейсон
источник

Ответы:

33

Файл меньше по размеру, но занимает один целый 4.0K блок на диске (вы можете иметь только один файл в одном блоке). Если бы его размер был (например) 5678 байт, он занимал бы два блока по 4,0 КБ, то есть 8,0 КБ.

du -b печатает размеры в байтах, переопределяя размер блока по умолчанию.

eumiro
источник
10

Чтобы добавить ответ eumiro, размер блока может быть разным для каждой файловой системы / раздела.

Вы можете найти размер блока файловой системы, используя tune2fs -l /dev/<disk> | grep '^Block size'или stat -c "%o" <file on the disk>.

Mikel
источник