Чому команди "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 / файловій системі тримається відкритим.

Отже, якщо є такі відкриті дескриптори до файлів, які вже вилучені, простір, зайнятий ними, вважається використаним dfdfє правильним), але вони не можуть бути врахованіdu через те, що з ними більше не пов’язані імена файлів.

Ви можете знайти всі пов'язані, але відкриті файли, за допомогою:

# lsof | grep '(deleted)'

7
Це просто врятувало мене. Поняття не мав, чому мій диск був повний, але Ду сказав, що він порожній. Відкрита ручка для файлу 8 Гб
Чейн

5
Як я можу видалити посилання?
Вікас Хардія

1
Іноді вам потрібно виконати це як root, щоб побачити видалені файли, відкриті процесами інших користувачів.
Енвек

1
Першопричиною цього для мене виявилася неправильна специфікація файлу журналу в одному з моїх /etc/logrotate.dфайлів. Неправильний запис був відсутній у встановленому режимі, що спричинило, що мій процес демон не відпускав свої повернені / видалені файли.
Дейл Андерсон

як я можу видалити ті непов'язані, але відкриті файли?
zx1986

14

Як я можу видалити посилання? - Вікас Хардія 22 серпня 1414 о 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підтримує це:

Підсумуйте використання диска кожного файлу , рекурсивно для каталогів.

там написано, що duпрацює з файлами.

dfвідображає кількість дискового простору, доступного у файловій системі, що містить кожен аргумент імені файлу. Якщо ім'я файлу не вказано, відображається місце, доступне для всіх поточно встановлених файлових систем.

тут йдеться про те, що dfстосуються файлів, але не самої файлової системи.


du використання може бути змінено символом -x, щоб сказати йому лише рахувати файли в даній файловій системі.
macetw

1

Простіше сказати:

Ви бігли duбез кореневих дозволів. Так що не в змозі перевірити обсяг пам'яті, доступний /proc, /mntі т.д., папки.

df показали загальний використаний та вільний простір відповідно.

Отже, перевіряючи кореневу файлову систему Linux, приймайте duзвіт як остаточний.


0
df

Підсумуйте вільний простір на диску

Він відображає кількість доступного місця на диску.

du

Підсумуйте використання диска.

Він відображає кількість використовуваного дискового простору.


так, але в результаті "df -Th" він показав використаний 68G. сьогодні вранці, коли я намагаюся отримати доступ до системи ubuntu, вона все ще дає повідомлення "система працює в режимі низької графіки", але коли я перевіряю використання пам'яті, команди "df" і "du" показують розумний результат. Але в чому проблема з "режимом низької графіки"?
користувач2068965

Погляньте на це .
Мітч

0

нічого такого заплутаного: ось погляд: =

1) du == Використання диска
Скільки дискового простору використовують ці файли?

2) df == Без диска
Скільки вільного місця на диску?

Також для системи працює в низькому графічному режимі " тут "


0

я зробив
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Це саме пояснювало велику розбіжність у 21 ГБ, яку я бачив!
Файл, про який йдеться, був / поміняйте файл, якщо 21 ГБ !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.