df, du Сообщить о неправильном использовании диска

df и du оба неправильно сообщают, что мой корневой раздел, SSD на 100 ГБ, не имеет свободного места и использует 100G соответственно; 85G в /home/steven одиночку. Однако простое суммирование использования диска, предоставляемое du , сообщает менее 13G.

Как я могу это исправить?

В частности:

 ~ » du -sh ~ 85G /home/steven ~ » du -b ~ | wc -l 15041 ~ » du -h ~ | sort -h | tail -n 1 85G /home/steven # 91088489808 bytes if using -b for du ~ » du -b ~ | sort -n | head -n 15040 | cut -f 1 | perl -ne 'BEGIN{$i=0;}$i+=$_;END{print $i.qq|\n|;}' 12735983847 # 11-12G, roughly 

Очевидно, что существует огромное расхождение между 85G и 11G или 12G. Я запустил lsof +L1 и устранил все процессы с файлами, помеченными как deleted , но все равно не повезло.

У меня есть несколько мягких ссылок в $HOME указывающих на каталоги (например, repos ) на внешнем жестком диске, что может быть проблемой на некоторых постах Stack Exchange, которые я читаю, но я не могу понять.

Что я должен делать дальше?

2 Solutions collect form web for “df, du Сообщить о неправильном использовании диска”

du делает первый шаг по пересечению данного дерева. По умолчанию в нем показано использование каждого дерева каталогов, в котором показано использование каждого диска:

 $ du ~ 4 /home/bob/Videos 40 /home/bob/.cache/abrt 43284 /home/bob/.cache/mozilla/firefox 43288 /home/bob/.cache/mozilla 12 /home/bob/.cache/imsettings 48340 /home/bob/.cache 4 /home/bob/Documents 48348 /home/bob 

Если задан параметр -a , он будет дополнительно показывать размер каждого файла.

С параметром -s он покажет только общий размер каждого файла аргумента или дерева каталогов.

 $ du -s ~ 48348 /home/bob $ du -s ~/* 4 /home/bob/Videos 4 /home/bob/Documents 

Итак, когда вы побежали

 $ du -b ~ | wc -l 15041 $ du -b ~ | sort -n | head -n 15040 | cut -f 1 | \ perl -ne 'BEGIN{$i=0;$i+=$_;END{print $i.qq|\n|;}' 12735983847 

вы суммировали размер всего, что находится под вашим домашним каталогом, – много раз, к сожалению, потому что размер, указанный в каждой строке, включает все подкаталоги, но поскольку вы опустили окончательную строку вывода du, что будет линией для /home/steven , du не /home/steven размер любого из обычных файлов на верхнем уровне вашего домашнего каталога . Таким образом, сумма не включала ваш очень большой .xsession-errors .

И когда вы побежали

 du -sb ~ returns 91296460205, but the sum of du -sb ~/* is only 1690166532 

ваш du -sb ~/* не включал в себя файлы или каталоги в вашем домашнем каталоге . ,

Оба du ~ | tail -1 du ~ | tail -1 и du -s ~ должны делать разумную работу по отображению дискового пространства вашего домашнего каталога (конечно, не включая удаленные, но открытые файлы), но если вы хотите суммировать все размеры файлов, не полагаясь на du , вы можете сделать что-то подобное (предполагая современную find которая поддерживает формат printf %s , чтобы показать размер в байтах):

 find ~ -type f -printf '%s\n' | perl -ne 'BEGIN{$i=0;$i+=$_;END{print $i.qq|\n|;}' 

Вы суммируете байты, но размер блока файловой системы, вероятно, намного больше, чем 1 байт. Для точного подсчета вы должны округлить размер каждого файла, чтобы он был кратным размеру файловой системы.

С установленным GNU coreutils вы можете запустить stat --file-system $HOME чтобы найти размер блока файловой системы.

В среднем файлы будут тратить половину блока. Умножьте половину блока на количество файлов в $ HOME и посмотрите, близок ли результат к 70GiB. Если это так, тогда ваша тайна будет решена.

  • Что случилось с моим свободным пространством
  • использование пространства
  • du дает ошибку и результат одновременно
  • Емкость сервера Linux указывает, что 100% используется даже после того, как файлы журнала были опустошены
  • du -s - образный размер VS du -s
  • Причина использования корневого пространства жесткого диска
  • Что означает столбец «1K-blocks» в выводе `df`?
  • Перечислите размер подкаталогов только с учетом файлов pdf
  • размер отчетов для каталога на 4 Кбайта больше, чем сумма содержимого
  • DU: показывать только папки на глубине
  • Как применить du (fx) ко всем вспомогательным каталогам, за исключением некоторых из них?
  • Interesting Posts

    Как подсчитать, сколько файлов принадлежит каждой комбинации пользователей / групп?

    Как загружать Linux с помощью rootfs в ОЗУ?

    Команда Unix, которая не принимает аргументов

    Проблема с установкой MEncoder

    Как отправить stderr в stdout с помощью трубы в другую команду?

    как я могу запустить интерактивную систему systemd

    специальные разделы подкачки для нескольких экземпляров debian на одном компьютере

    Некоторые приложения бросают ошибки GTK +

    CTRL + C: копирование или прерывание

    Как указать область памяти для ramdrive

    Ошибка при установке инструмента расширения HDF-EOS5: не удается найти -lGtcp

    Нужно ли настраивать ZFS (используя FreeBSD 10) для файлов на иностранном языке (например, имена файлов на японском / тайском языке / etc)?

    Какая служба выполняет настройку часов реального времени

    Рекурсивно сравнивать каталоги с резюме по разному содержимому без изучения различий в содержимом файла

    Файл с именем ':'

    Linux и Unix - лучшая ОС в мире.