Почему df и du показывают разные результаты?

8

Когда я выполняю команду, df -h /tmpона говорит, что использование диска составляет 100% , но при попытке du -sh /tmpэто говорит, что использование диска составляет 2% .

Я хочу знать, почему эти команды показывают различный вывод, как эти две команды работают и каково решение этой проблемы.

Контекст: /tmp устанавливается в собственной файловой системе. Я использую серверную версию Ubuntu 12.04 в своей учетной записи VPS. Из-за этой проблемы загрузка /tmp100% по dfнекоторым программам жалуется на свободное место в /tmp.

Nischay
источник

Ответы:

10

du сообщает о свободном пространстве, сканируя доступные inode и вычисляя их размер.

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

Простой перезапуск должен очистить / tmp и решить вашу проблему.

Альтернативой может быть сканирование открытых файлов и перезапуск или уничтожение процесса, который не освободил удаленные файлы.

Махеш
источник
1

Некоторые файлы в корневой файловой системе могут быть скрыты за точкой монтирования. Файлы могут быть созданы под точкой монтирования, когда соответствующее устройство не смонтировано, и когда устройство смонтировано снова, файлы не учитываются командой du. Очень вероятная проблема, когда есть большая разница между результатами du и df.

Ник
источник
Бинго. Это было причиной для меня.
jdhildeb
-1

Обязательно sudoпри запуске du. Например, если вы запустите du -hs /*, вы не увидите реальное использование диска, если не добавите sudo.

raimohanska
источник