Linux как узнать что занимает место на диске
Перейти к содержимому

Linux как узнать что занимает место на диске

  • автор:

Записки IT специалиста

Linux — начинающим. Как узнать чем занято место на диске?

  • Автор: Уваров А.С.
  • 24.08.2022

Контроль свободного места на серверах и рабочих станциях под управлением Linux является достаточно актуальной задачей для администратора, особенно при использовании SSD, объемы которых все еще меньше, чем хотелось бы. При этом недостаточно только контролировать занятое пространство, нужно еще четко понимать, чем именно оно занято, то ли это рабочие данные и нужно действительно расширять дисковую подсистему, то ли скопившийся годами хлам, который можно безболезненно удалить.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Любая работающая система со временем обрастает всякими нужными и не особо нужными файлами, которые могут быть щедро разбросаны по файловой системе. Это могут быть установочные пакеты, архивы, какие-то временные копии, которые оставили по принципу «пусть недельку полежат на всякий случай», а также временные файлы, кеши и т.д. и т.п.

И когда встает вопрос: а собственно, чем это занято место на диске? Ответить на него бывает непросто, нужен анализ использования диска и сегодня мы рассмотрим, как это можно сделать.

Утилиты df и du

Начнем с самых основ, эти утилиты может и не радуют удобством, но они есть в любом Linux-дистрибутиве и просто делают свою работу. Начнем с df, эта утилита позволяет получить отчет о доступном и использованном пространстве на файловых системах. Использовать ее просто:

df -h

Ключ -h (—human-readable) выводит данные в удобочитаемом формате, т.е. мегабайтах и гигабайтах, также можете использовать ключ -H, он делает тоже самое, но с использованием системы СИ, т.е. в расчетах используется 1000 вместо 1024.

linux-disk-space-001.png

Выяснив нужную файловую систему и точку монтирования, перейдем к более глубокому анализу того, что занимает место на диске, для чего привлечем утилиту du, которая показывает место занимаемое файлами и папками, с ней также можно использовать ключи -h или -H, но если мы выполним следующую команду, то результат нас вряд-ли обрадует:

du -h /

Ниже показана часть такого вывода:

linux-disk-space-002.png

Дело в том, что утилита пройдет рекурсивно на всю глубину и выдаст размер каждой папки и файла в указанном расположении, чтобы изменить такое поведение используйте ключ -d для явного указания глубины анализа. Например, ограничимся только директориями верхнего уровня:

du -hd 1 /

Ну вот, совсем уже другое дело. Как можем увидеть, больше всего места занимает директория /var:

linux-disk-space-003.png

Теперь проанализируем персонально ее:

du -hd 1 /var

linux-disk-space-004.png

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

Утилита ncdu

Все это хорошо, но несколько долго и муторно, может быть есть способ проще? Есть, это утилита ncdu (NCurse Disk Usage), которая представляет удобный интерактивный инструмент с псевдографическим интерфейсом. Для установки в DEB-cистемах используйте команду:

apt install ncdu

Если запустить утилиту без параметров, то она проанализирует текущее расположение, поэтому мы выполним:

ncdu /

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

linux-disk-space-005.png

Здесь же сразу вы можете получить дополнительную информацию, так значок @ слева обозначает что перед нами символическая ссылка, а буква e (empty) — указывает на пустую директорию. Как мы уже говорили, система интерактивна, для навигации следует использовать стрелки, а для перехода с уровня на уровень — Enter . Но это еще не все, вы можете сразу отсюда удалять файлы простым нажатием на d , но при этом вам придется явно подтвердить удаление, что исключает случайные срабатывания.

linux-disk-space-006.png

Для быстрого знакомства со всеми возможностями утилиты всегда можно вызвать встроенную справку, нажав ? . Все это указано прямо в шапке утилиты.

linux-disk-space-007.png

На наш взгляд, данная утилита заслуживает того, чтобы стать частью джентельменского набора любого администратора, на своих серверах мы устанавливаем ее по умолчанию. Кстати, если вы работаете с WSL (Windows Subsystem for Linux), то можете с помощью ncdu выполнять анализ файловых систем Windows.

Инструменты графической оболочки

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

linux-disk-space-008.png

Интерфейс программы стандартный для такого рода утилит: слева список файлов и директорий, отсортированный по размеру, а справа интерактивная диаграмма, которая может быть представлена как в круговой, так и в линейной форме. Прямо отсюда мы можем переходить в интересующие расположения, копировать ссылки на них или просто удалять файлы и директории.

linux-disk-space-009.png

Но, как мы уже говорили, утилита работает без повышения прав, поэтому столь широкий набор действий доступен пользователю только в отношении тех объектов файловой системы, на которые у него есть права, как правило это Домашняя директория. При этом ему доступен анализ всей файловой системы, только вот там он будет ограничен только просмотром.

linux-disk-space-010.png

Что именно использовать из предложенных вариантов — личное дело каждого. Linux тем и хорош, что предоставляет множество разных путей для решения одной и той же задачи и нельзя сказать, что какой-то из этих путей правильный, а остальные нет. Все они ведут к одной цели.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Дополнительные материалы:

  1. Linux — начинающим. Часть 1. Первое знакомство
  2. Linux — начинающим. Часть 2. Установка Ubuntu Server
  3. Linux — начинающим. Часть 3. Установка Debian 7 для сервера
  4. Linux — начинающим. Часть 4. Работаем с файловой системой. Теория
  5. Linux — начинающим. Часть 4. Работаем с файловой системой. Практика
  6. Linux — начинающим. Часть 5. Управление пакетами в Debian и Ubuntu
  7. Linux — начинающим. Часть 6. Управление пользователями и группами. Теория
  8. Linux — начинающим. Часть 6. Управление пользователями и группами. Практика
  9. Linux — начинающим. Часть 7. Потоки, перенаправление потоков, конвейер
  10. Настройка языка и региональных стандартов в Ubuntu Server/Debian
  11. Используем APT Pinning для закрепления пакетов в Debian и Ubuntu
  12. Linux — начинающим. Что такое Load Average и какую информацию он несет
  13. Обновляем снятый с поддержки дистрибутив Ubuntu
  14. Linux — начинающим. Обновление Debian до следующего выпуска
  15. Осваиваем эффективную работу в Midnight Commander
  16. Linux — начинающим. Что такое пространства подкачки и как они работают
  17. Linux — начинающим. Screen — многозадачность в терминале и ни единого разрыва!
  18. Linux — начинающим. Как узнать температуру процессора и накопителей
  19. Linux — начинающим. Как получить информацию об оборудовании ПК
  20. Linux — начинающим. Установка и первоначальная настройка Debian 11 для сервера

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Свободное место на диске Linux

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

Если вам нужно узнать сколько места занимает каждая из папок (сколько весит) в Linux, тогда вам в следующую статью: Чем занято место на диске Linux.

Чтобы проверять свободное место на диске в Linux-е есть несколько способов.

1-й способ. Определение свободного места в Linux через терминал

Терминал — неотъемлимая часть Linux-а, как cmd для Windows-а. Чтобы узнать занятое и свободное место в разделах через терминал, как правило используют команду df. Наиболее частый вариант ее использования такой:

df -h

Ключ -h означает human, т.е. «человеческий» формат вывода. При использовании такого флага, Вы увидите сколько всего есть места и сколько есть доступного свободного места в мегабайтах, гигабайтах и т.п. Результат будет выглядеть примерно так:

Filesystem Size Used Avail Use% Mounted on /dev/sdb1 60G 19G 41G 32% /

Т.е. наш диск имеет размер 60 Гб, использовано на нем 19 Гб, свободно 41 Гб.

Кроме ключа -h можно так же использовать такие ключи:

-k — вывести объем места в килобайтах,
-m — вывести объем места в мегабайтах.

Есть так же и другие ключи, изучить которые можно набрав команду man df.

Иногда, когда свободное место заканчивается, вы можете столкнуться с ситуацией, когда df неверно отображает свободное место. Однако, не пугайтесь, т.к. все дело в том, что если используется файловая система Ext4, то 5% (по умолчанию) резервируется для root. Поменять размер резервируемого места можно с помощью утилиты tune2fs, примерно так: tune2fs -r 0 /dev/sdb1 где 0 — количество резервируемых блоков. Размер блока обычно равен 1024 байтам.

Помимо определения свободного места на диске, команда df полезна для того, чтобы узнать на каком разделе находится папка (директория) или файл. Сделать это очень просто. Нужно всего-лишь дописать к команде путь до папки, т.е. написать, например, так:

$ df -h /usr/local/ Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda3 70G 29G 38G 43% /

Или, например, так:

$ df -h ~/tmp Файловая система Разм Исп Дост Исп% смонтирована на /dev/sdb1 466G 452G 14G 97% /home

Чем занято место на диске Linux

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

1-й способ. Утилита du — подсчет занимаемого места.

Воспользоваться встроенной утилитой du. Сделать это достаточно просто. Например, чтобы определить в текущей папке занимаемое место всеми подкаталогами и файлами, нужно использовать команду:

du -sm *

Вывод этой команды будет примерно такой:

514 folder1 893 folder2 44 file1.sh 53 file2.txt

Немного поясню использованные ключи:
s — означает, что нужно вывести суммарное занимаемое место, т.е. например, не показывать каждый файл из папки folder1 и занимаемое им место, а показать, сколько всего места занимают все файлы в папке folder1
m — означает вывод данных в Мб, можно использовать вместо него ключи b (в байтах) и k (в килобайтах)
* — означает подсчитать все объекты в текущем каталоге. Если не указать * , то будет подсчитано все занимаемое место текущего каталога. Так же, можно подсчитать сколько места занимает конкретная папка со всеми файлами и подкаталогами в ней, для чего нужно написать вместо * название нужного каталога.

Когда папок и файлов много, можно отсортировать результаты, чтобы было проще определить, какая папка или файл заняли больше всего места:

du -sm * | sort -n

Эта простая команда поможет вам выяснить, чем занято место в конкретной папке или на всем разделе Linux. Команда универсальна, проста в использовании и есть в любых дистрибутивах Linux.

2-й способ. Утилита ncdu — анализ занятого места и его освобождение

Есть так же и другие способы определить чем занято место на диске, например, очень удобная в плане анализа занятого места — утилита ncdu. Установить ее можно, например, так:

  • Для Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncdu
  • Для Red Hat систем (dpkg-пакеты) командой yum install ncdu

Дальше просто запустите ncdu и подождите, когда она подсчитает занимаемое место. По-умолчанию программа посчитает размеры папкой текущей папки, из которой программа была запущена. Если нужно посчитать какую-то другую папку, просто добавьте к команде путь к папке, например, так: ncdu /var/www. Если нужно посчитать занимаемое место на всем диске, можно использовать ncdu /.

Программа показывает занимаемое папками место, позволяет заходить в них и сразу видеть сколько подпапки занимают места. Так же в этой утилите можно выполнять различные действия над файлами и папками. Получить справку по клавишам управления можно нажав «?«. Ниже приведу список некоторых из клавиш управления:

  • d — удалить выбранный файл или папку с файлами;
  • n — отсортировать файлы и папки по имени;
  • s — отсортировать файлы и папки по объему занимаемого места;
  • t — показывать сначала папки, затем файлы;
  • g — режим отображения (в процентах, графически, комплексно);
  • a — режим отображения (размер файла, занятое место на жестком диске)
  • e — включить/отключить отображение скрытых файлов;
  • i — показать дополнительную информацию о папке или файле;
  • r — заново пересчитать занимаемое место;
  • q — выйти из программы;

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

3-й способ. Графические утилиты.

Есть большое количество графических программ, которые позволяют делать примерно то же, что ncdu, только в графике. В Ubuntu, например, есть графическая программа, которая находится в Приложения > Системные утилиты > Анализатор использования диска. Кроме того, есть много и других программ. Приведу небольшой список, чтобы вы могли их попробовать и выбрать, какая больше нравится:

  • В системах с Gnome обычно есть утилита Baobab, которая графически покажет занимаемое папками место, так же выводит диаграмму;
  • Утилита KDirStat для KDE (WinDirStat для Windows) — в отличие от Baobab показывает вместо диаграммы прямоугольники, размер которых соответствует занимаемому папками пространства;
  • Gd Map — аналог KDirStat для Gnome;
  • Filelight и Philesight — аналоги Baobab (показывает папки в виде диаграммы).

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

Как посмотреть, что занимает место на диске linux?

Привет, как посмотреть, что занимает место? df -h говорит, что занято 25гб, однако по факту только 9гб, ncdu / сказала, что тоже 9гб занято:

[root@erp /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 30G 25G 3.1G 90% /
tmpfs 939M 4.0K 939M 1% /dev/shm
/dev/sda1 240M 38M 190M 17% /boot
[root@erp /]# du -shx /
9.3G /
[root@erp /]#

В чем дело? Как посмотреть, что еще занимает место?

  • Вопрос задан более трёх лет назад
  • 13905 просмотров

Комментировать
Решения вопроса 1
PostgreSQL DBA

Вероятно запущенные процессы удерживают открытыми дескрипторы уже удалённых файлов, что не позволяет освободить занятое место ФС.

Список дескрипторов и процессов можно получить например так:
sudo lsof -a +L1
Пример строки от меня:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME php 17455 melkij 4r REG 254,1 1048576000 0 2624572 /home/melkij/tmpfile (deleted)

php процесс с pid 17455 удерживает deleted дескриптор файла размером в 1гб.

Далее адресно разбираться с процессами.

Ответ написан более трёх лет назад
Нравится 9 2 комментария
stanced @stanced Автор вопроса

Да, все верно, лог астериска был давно удален, но процесс оставался запущенным. Спасибо 😉

asterisk 2004 root txt REG 8,3 36755146 0 669573 /usr/sbin/asterisk (deleted) asterisk 2004 root 7w REG 8,3 16464667290 0 1591827 /var/log/asterisk/full (deleted)

Qwentor

Спасибо, помогло решить проблему с переполнением диска
Ответы на вопрос 3
установи ncdu — очень удобная навигация и сразу понятно где «большая» папка, а где не очень.
Ответ написан более трёх лет назад
Нравится 3 1 комментарий

YMax

Спасибо, всё очень наглядно — будет проще разбираться с местом на серверах.

shambler81

Виктор Таран @shambler81 Куратор тега Linux
cd /
du -sh *
как то-то так ?
Ну или так
du -sh * | grep G
( только гигабайты)
Ответ написан более трёх лет назад
Нравится 1 3 комментария

Finesse

Дополню: можно выполнить эту команду в любой директории, чтобы получить детализацию по этой директории

stanced @stanced Автор вопроса

[root@erp /]# du -sh * | grep G 1.5G home 2.4G usr 3.5G var [root@erp /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 30G 25G 3.1G 90% / tmpfs 939M 4.0K 939M 1% /dev/shm /dev/sda1 240M 38M 190M 17% /boot [root@erp /]#

shambler81

Виктор Таран @shambler81 Куратор тега Linux

Врать не хорошо, там вообще другой вывод, такого плана получается.
И да он работает так как вам надо в любом каталоге выводя статистику по нему

[root@server1 log]# du -sh * 25M audit 4.0K boot.log 182M btmp 171M btmp-20171101 24K ConsoleKit 1.4M cron 7.1M cron-20171105 7.1M cron-20171112 7.1M cron-20171119 7.1M cron-20171126 40K dmesg 44K dmesg.old 38M docker 360K dracut.log 19G httpd 28K lastlog 21M letsencrypt

du -sh* | grep G
не покажу нужна большая папка а это может занять время.
Как вариант что-то болшое лежит в корне.
Как второй варинат проверьте диск на логические ошибки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *