Как посмотреть размер файла в каталоге Linux
Что проверяют
Уверенно ли вы работаете в консоли тестового стенда и понимаете ли разницу между размером файла и местом на диске. Следом часто просят найти самый большой файл в каталоге логов или все файлы больше заданного размера.
Как отвечать
Назовите несколько команд и скажите, что показывает каждая:
ls -l file.log: размер в байтах в пятой колонке,ls -lhпереводит его в K, M, G;stat -c %s file.log: точный размер в байтах одним числом, удобно сравнивать в скрипте. Без-cпокажет всё, включая полеSizeи число занятых блоков;du -h file.log: сколько файл реально занимает на диске с учётом блоков;du -sh logs/: суммарный размер каталога со всем содержимым;du -h -d 1 /var/log | sort -h: подкаталоги первого уровня по возрастанию размера, быстрый способ найти, что разрослось;find /var/log -type f -size +100M: файлы больше 100 МБ;df -h: сколько свободно на разделе целиком.
Привяжите это к работе тестировщика. Проверка лимита загрузки: truncate -s 10M test.bin создаёт файл ровно нужного размера, а stat подтверждает число байт. Проверка скачивания: размер файла сравнивается с Content-Length из ответа или с эталоном. Проверка ротации логов: du по каталогу до и после.
Отдельно упомяните единицы. -h и суффикс M считают степенями 1024, то есть 10M это 10 485 760 байт, а не 10 000 000. Если в требованиях лимит «10 МБ», уточните, какой из вариантов имеется в виду: граница как раз и есть место для бага.
Где спотыкаются
Смотрят ls -l на каталог и получают 4096. Это размер самой записи каталога, а не содержимого, для содержимого нужен du -sh.
Не понимают, почему ls и du расходятся. du считает занятые блоки, поэтому крошечный файл займёт 4 КБ, а разреженный файл в du окажется меньше, чем в ls.
Проверяют граничное значение файлом «примерно нужного размера». Для теста лимита нужны точные значения: ровно на границе, на байт больше и на байт меньше.