Разные результаты комманд du и df +
Материал из wiki.helpdesk.by
Почему комманды df и du иногда выводят разные значения ?
Иногда на серверах UNIX и Linux систем комманды df (отображение свободного места на диске) и du (отображает статистику использования диска) сообщают разные значение. Обычно df показывает большее значение, нежели du.
Вот пример такой ситуации:
Following is normal output of df and du for /tmp filesystem: Это нормальный вывод комманд df и du для /tmp
# df -h /tmp Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1e 496M 22M 434M 5% /tmp
# du -d 0 -h /tmp/ 22M /tmp/
Вот результат этих же комманд, но с разными значениями:
# df -h /tmp/ Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1e 496M 39M 417M 9% /tmp
# du -d 0 -h /tmp/ 22M /tmp/
Как видно, обе комманды выводят разные значения. Это связано с OFD (Open file descriptor). Например если отрыт файл /tmp/application.log каким либо приложением или пользователем и этот же файл удалить, то df и du будут показывать разные результаты. Все это связано с тем, что файл который Вы удалили все еще используется и занимает дисковое пространство, о чем и говорит комманда df. Для проверки этого можно воспользоваться коммандой lsof
# lsof | grep tmp bash 594 root cwd VDIR 0,86 512 2 /tmp bash 634 root cwd VDIR 0,86 512 2 /tmp pwebd 635 root cwd VDIR 0,86 512 2 /tmp pwebd 635 root 3rW VREG 0,86 17993324 68 /tmp (/dev/ad0s1e) pwebd 635 root 5u VREG 0,86 0 69 /tmp (/dev/ad0s1e) lsof 693 root cwd VDIR 0,86 512 2 /tmp grep 694 root cwd VDIR 0,86 512 2 /tmp
Как видно файл размером 17993324K открытый в /tmp через pwebd, но, как писали ранее удален. Для решения данной проблемы, необходимо либо закрыть файл без сохранения в приложении которым он используется, либо "убить" приложение. В данном случае можно убить приложение pwebd с PID 635 коммандой
$kill 635
После этого дискритпор файла будет освобожден и файл полностью удален.
