Linux

Анализ использования диска в Linux: 5 проверенных способов

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

Обновлено 16 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+Arch LinuxЛюбой дистрибутив с Bash

Введение / Зачем это нужно

Заполнение диска — одна из самых частых причин сбоев в работе Linux-серверов и рабочих станций. Когда место заканчивается, перестают работать службы, базы данных, невозможно установить обновления. Этот гайд поможет вам быстро диагностировать, какие именно файлы и директории consume (занимают) больше всего места, и принять обоснованные решения по их очистке. Вы получите навык, который пригодится любому системному администратору или разработчику, работающему с Linux.

Требования / Подготовка

  1. Доступ к терминалу (Ctrl+Alt+T или SSH-подключение).
  2. Права суперпользователя (sudo) для анализа системных директорий (/var, /usr) и очистки кэша пакетов. Для анализа домашней директории (/home/username) права sudo не требуются.
  3. Базовое знакомство с командной строкой: умение переходить по каталогам (cd), просматривать содержимое (ls).
  4. Рекомендуется установить утилиту ncdu для наиболее удобного анализа (инструкция ниже).

Пошаговая инструкция

Шаг 1: Быстрый обзор общего использования (df)

Первым делом узнайте, на каких файловых системах не хватает места.

df -h
  • -h — «human-readable», выводит размеры в ГБ, МБ.
  • Что смотреть: колонка Use% (процент использования) и Size/Avail (размер и свободное место). Обратите внимание на строки с 100% или близко к этому значению. Чаще всего проблема в /, /var или /home.

Шаг 2: Поиск крупнейших каталогов в проблемной ФС (du)

Узнайте, какие каталоги в проблемной файловой системе самые большие. Начните с корня (/) или с конкретного раздела (например, /var).

# Анализ корня (может потребовать sudo)
sudo du -h --max-depth=1 / 2>/dev/null | sort -hr

# Более быстрый анализ только /var (частая проблема)
sudo du -h --max-depth=1 /var 2>/dev/null | sort -hr
  • --max-depth=1 — показывает только размер подкаталогов первого уровня (не углубляясь).
  • 2>/dev/null — подавляет ошибки «Permission denied» (для доступа к которым нет прав).
  • sort -hr — сортировка по human-размеру в обратном порядке (сначала самые большие).
  • Результат: Вы увидите список вроде 4.5G /var/log. Теперь вы знаете, что логи занимают 4.5 ГБ.

Шаг 3: Углублённый интерактивный анализ (ncdu)

Для наглядного, интерактивного исследования настоятельно рекомендуется установить ncdu.

# Установка (выберите свою ОС)
sudo apt update && sudo apt install ncdu   # Debian/Ubuntu
sudo dnf install ncdu                     # RHEL/Fedora/CentOS 8+
sudo yum install ncdu                     # CentOS 7/RHEL 7
sudo pacman -S ncdu                       # Arch

# Запуск анализа
ncdu /путь/к/проблемной/директории   # например, ncdu /var

Как работать в ncdu:

  • Стрелки / — навигация по каталогам.
  • Enter — войти в подкаталог.
  • d — удалить выбранный файл/каталог (будет запрос подтверждения!).
  • q — выйти.
  • Внизу экрана всегда видите общий размер текущей директории. Это самый эффективный способ «прогуляться» по диску и найти «слона».

Шаг 4: Поиск конкретных больших файлов (find)

Если вы знаете, что ищете (например, старые логи, дампы, кэш), используйте find.

# Найти все файлы в /var/log больше 500 МБ
sudo find /var/log -type f -size +500M -exec ls -lh {} \;

# Найти все файлы с расширением .log старше 30 дней в домашней директории
find ~ -name "*.log" -type f -mtime +30 -exec ls -lh {} \;

# Найти 10 самых больших файлов ВО ВСЕЙ системе (медленно, но точно)
sudo find / -type f -exec du -h {} + 2>/dev/null | sort -hr | head -20
  • -size +500M — файлы больше 500 мегабайт. Можно использовать G для гигабайт, k для килобайт.
  • -mtime +30 — файлы, менявшиеся более 30 дней назад.
  • -exec ls -lh {} \; — для каждого найденного файла вывести его размер в читаемом виде.

Шаг 5: Очистка кэша пакетного менеджера (быстрый выигрыш)

Пакетные менеджеры хранят скачанные .deb/.rpm-пакеты, которые после установки можно удалить.

# Ubuntu/Debian (APT)
sudo apt clean        # Удаляет ВСЕ файлы кэша из /var/cache/apt/archives
sudo apt autoclean    # Удаляет только устаревшие файлы кэша (безопаснее)

# RHEL/CentOS/Fedora (DNF/YUM)
sudo dnf clean all
sudo yum clean all

Это может сразу освободить от 200 МБ до нескольких гигабайт.

Проверка результата

  1. Снова выполните df -h для интересующего вас раздела. Поле Use% должно уменьшиться, а Avail — увеличиться.
  2. Если использовали ncdu, вы можете повторно запустить его на той же директории и увидеть, как изменилась картина.
  3. Убедитесь, что службы, которые ранее падали из-за нехватки места, снова работают (например, sudo systemctl status postgresql).

Возможные проблемы

  • ncdu не устанавливается / команда не найдена.
    • Решение: Убедитесь, что у вас есть интернет и актуальные репозитории (sudo apt update). Используйте альтернативу — комбинацию du и sort из Шага 2.
  • du или find выдают кучу ошибок «Permission denied».
    • Решение: Это нормально. Запускайте команды с sudo для системных директорий (/var, /usr, /opt). Для домашней директории (/home/your_user) sudo не нужен.
  • Удалил файл через ncdu, но место не освободилось.
    • Решение: Файл мог быть открыт каким-то процессом. Найдите процесс: sudo lsof | grep /полный/путь/к/файлу. Остановите процесс или перезапустите службу, которая его использует. После этого место освободится.
  • df показывает 100%, а du в / находит только 50% использования.
    • Решение: Классическая проблема! Место занято «невидимыми» файлами: удалёнными, но ещё открытыми процессами (например, старые логи, которые ротировались). Найдите их: sudo lsof | grep deleted. Остановите соответствующий процесс (часто это systemd-journald или ваше приложение), и место освободится.

Часто задаваемые вопросы

Как найти самые большие файлы и папки в домашней директории?
Чем команда du отличается от df?
Можно ли автоматизировать анализ диска по расписанию?
Почему `df -h` показывает, что диск заполнен, а `du` не находит больших файлов?

Полезное

Быстрый обзор общего использования
Поиск крупнейших каталогов в текущей папке
Углублённый анализ с ncdu (рекомендуется)
Поиск конкретных больших файлов по расширению
Очистка кэша пакетного менеджера (apt/dnf/yum)

Эта статья помогла вам решить проблему?