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


26

Я не могу получить доступ к системе Ubuntu на моем компьютере, появляется сообщение об ошибке: « система работает в режиме низкой графики », и я попробовал некоторые команды, которые я искал из Интернета.

Я обнаружил проблемы, кажется, нет свободного места на диске. Я использовал команды " df " и " du " для проверки, результаты следующие:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

а также

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

как бы очистить систему для большего дискового пространства?


Вопрос в заголовке и в конце тела вопроса совсем другой. Некоторые ответы связаны с одним вопросом, некоторые с другим. Вы должны уточнить свои реальные потребности и, возможно, принять ответ тоже.
Мелебиус

Ответы:


50

Скорее всего, вы знаете, что можете удалить файл, который все еще используется каким-либо приложением, и для этого приложения он остается доступным. Это потому, что файловый дескриптор в / proc / filesystem остается открытым.

Поэтому, если есть такие открытые дескрипторы для файлов, которые уже удалены, занимаемое ими пространство считается использованным dfdfявляется правильным), но их нельзя принимать во внимание, duпоскольку с ними больше не связаны имена файлов.

Вы можете найти все несвязанные, но открытые файлы с помощью:

# lsof | grep '(deleted)'

7
Это только спасло меня. Я понятия не имел, почему мой диск был полон, но дю сказал, что он был пуст. Дескриптор открытого файла для файла 8 ГБ
Cheyne

5
Как я могу удалить ссылки?
Викас Хардиа

1
Иногда вам нужно выполнить это как root, чтобы увидеть удаленные файлы, открытые процессами других пользователей.
Энвек

1
Основной причиной этого для меня стала неправильная спецификация файла журнала в одном из моих /etc/logrotate.dфайлов. В плохой записи отсутствовала подпрограмма postrotate, из-за которой процесс-демон не отпускал свои повернутые / удаленные файлы.
Дейл Андерсон

Как я могу удалить эти несвязанные, но открытые файлы?
zx1986

14

Как я могу удалить ссылки? - Викас Хардиа 22 августа '14 в 5:46

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

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

Не забудьте снова запустить службу или процесс, если это демон или какой-либо другой сервис на вашем компьютере. Если можете, просто перезагрузите компьютер;)


9

Хорошо, давайте проверим справочные страницы:

df - сообщает об использовании дискового пространства файловой системы

а также

du - оценить использование файлового пространства

Эти два инструмента были предназначены для разных целей. Хотя df, чтобы показать использование файловой системы, duэто сообщить об использовании файлового пространства. duработает из файлов, в то время как dfработает на уровне файловой системы, сообщая, что ядро ​​говорит, что оно доступно. Продолжите читать duстраницу поддержки man:

Суммируйте использование диска каждого ФАЙЛА , рекурсивно для каталогов.

он говорит, duработает с файлами.

dfотображает объем доступного дискового пространства в файловой системе, содержащей каждый аргумент имени файла. Если имя файла не указано, отображается пространство, доступное во всех подключенных файловых системах.

тут говорится, что dfдело не в файлах, а в самой файловой системе.


Использование du можно изменить с помощью символа -x, чтобы он учитывал только файлы в данной файловой системе.
macetw

1

Просто сказал:

Вы запускались duбез прав root. Так что не в состоянии проверить доступное пространство /proc, /mntи т.д., папки.

df показал общее использованное и свободное пространство соответственно.

Поэтому, когда вы проверяете корневую файловую систему Linux, воспринимайте duотчет как окончательный.


0
df

Суммируйте свободное место на диске

Он отображает объем доступного дискового пространства.

du

Подведите итог использования диска.

Он отображает объем используемого дискового пространства.


да, но в результате "df -Th" он показал, что используется 68G. сегодня утром, когда я пытаюсь получить доступ к системе Ubuntu, он все еще выдает сообщение «система работает в режиме низкой графики», но когда я проверяю использование памяти, команды «df» и «du» показывают приемлемый результат. Но в чем проблема с «режимом низкой графики»?
user2068965

Посмотрите на это .
Митч

0

Ничего путающего: вот посмотри: =

1) du == Использование диска
Сколько дискового пространства используется этими файлами?

2) df == Disk Free
Сколько свободного места на диске у нас есть?

Также для системы работает в низком графическом режиме « здесь »


0

я сделал
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Это точно объясняло большое расхождение в 21 ГБ, которое я видел!
Файл был / swap, если 21 ГБ !!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.