LinuxСредняя

Мониторинг дискового пространства в Linux: полное руководство

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

Обновлено 15 февраля 2026 г.
15-20 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 8+Any Linux with bash

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

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

В этом гайде вы узнаете, как с помощью встроенных утилит (df, du) и удобного стороннего инструмента (ncdu) быстро оценить ситуацию с дисковым пространством, найти "пожирателей" места и настроить автоматическое оповещение о критическом заполнении. Все инструкции работают на большинстве современных дистрибутивов.

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

Перед началом убедитесь, что у вас есть:

  1. Доступ к терминалу — локально или через SSH.
  2. Базовые навыки работы в командной строке — умение вводить команды и читать вывод.
  3. Права суперпользователя (sudo) — для анализа системных директорий (/var, /usr) и установки пакетов. Некоторые команды du без sudo могут выдать ошибку "Permission denied".

💡 Совет: Если вы работаете на сервере, всегда тестируйте команды на тестовой директории перед запуском в системных папках.

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

Шаг 1: Проверка общего использования диска командой df

Команда df (disk free) — ваш первый инструмент. Она показывает свободное и занятое место на всех смонтированных файловых системах.

df -h

Флаг -h (human-readable) переводит размеры в килобайты, мегабайты или гигабайты для удобства чтения.

Пример вывода:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   45G  3.5G  93% /
tmpfs           1.9G  1.2M  1.9G   1% /dev
/dev/sdb1       200G   30G  160G  16% /home

Что смотреть:

  • Use% — процент использования. Значения выше 80% — повод для беспокойства.
  • Mounted on — точка монтирования. Обращайте внимание на корневую (/) и служебные (/var, /tmp) файловые системы.

⚠️ Важно: df показывает использование всего раздела, включая системные файлы, кэши и т.д. Чтобы понять, что именно занимает место внутри раздела, переходите к du.

Шаг 2: Анализ использования конкретных директорий с помощью du

Команда du (disk usage) оценивает размер файлов и директорий в текущей или указанной файловой системе.

Базовый пример:

du -sh /var
  • -s (summarize) — показать только итоговый размер, а не для каждого подкаталога.
  • -h — человекочитаемый формат.
  • Результат: 4.2G /var

Поиск самых больших папок в текущей директории:

du -sh * 2>/dev/null | sort -rh | head -n 10
  • * — все файлы/папки в текущей директории.
  • 2>/dev/null — подавить ошибки "Permission denied".
  • sort -rh — сортировка по убыванию числового значения (с учетом суффиксов G, M).
  • head -n 10 — показать топ-10.

Рекурсивный анализ с глубиной:

du -h --max-depth=2 / 2>/dev/null | sort -rh | head -n 20

Это покажет все директории в корне (/) с глубиной вложенности 2 уровня и выведет топ-20 по размеру.

💡 Совет: Всегда добавляйте 2>/dev/null при анализе системных директорий, чтобы не видеть ошибки доступа.

Шаг 3: Установка и использование ncdu для интерактивного анализа

ncdu (NCurses Disk Usage) — интерактивная утилита, которая кардинально упрощает поиск больших файлов. Она показывает древовидную структуру с размерами и позволяет удалять файлы прямо из интерфейса.

Установка:

  • Debian/Ubuntu:
    sudo apt update && sudo apt install ncdu
    
  • RHEL/CentOS/Fedora:
    sudo yum install ncdu   # или dnf на Fedora
    
  • Arch Linux:
    sudo pacman -S ncdu
    

Использование:

ncdu /путь/к/директории

Например, ncdu / для анализа всего корня (может потребовать несколько минут).

Управление в ncdu:

  • Стрелки / — навигация.
  • Enter — войти в папку.
  • d — удалить выделенный файл/папку (с подтверждением).
  • q — выйти.
  • ? — справка.

Интерфейс сразу показывает, какие папки "съедают" больше всего места, и позволяет быстро cleanspace.

Шаг 4: Настройка автоматического мониторинга через cron

Давайте настроим скрипт, который будет проверять использование диска каждый час и слать уведомление, если оно превышает 90%.

Создайте скрипт:

sudo nano /usr/local/bin/disk-monitor.sh

Вставьте следующий код:

#!/bin/bash
# Скрипт мониторинга дискового пространства
THRESHOLD=90
EMAIL="admin@example.com"  # Замените на ваш email
HOSTNAME=$(hostname)

# Получаем использование для корневого раздела (можно добавить другие)
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')

if [ "$USAGE" -ge "$THRESHOLD" ]; then
    echo "ВНИМАНИЕ: Дисковое пространство на $HOSTNAME заполнено на $USAGE% (порог: $THRESHOLD%)." | \
    mail -s "Критическое заполнение диска на $HOSTNAME" $EMAIL
fi

Пояснения:

  • df / — получаем строку для корня.
  • awk 'NR==2 {print $5}' — берем 5-ю колонку (процент использования) из второй строки.
  • sed 's/%//' — удаляем символ %.
  • mail — отправка email. Убедитесь, что установлен mailutils (sudo apt install mailutils).

Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/disk-monitor.sh

Добавьте в cron:

sudo crontab -e

Добавьте строку (выполнять каждый час):

0 * * * * /usr/local/bin/disk-monitor.sh

Сохраните и выйдите. Теперь скрипт будет автоматически проверять диск.

💡 Совет: Для тестирования временно снизьте THRESHOLD до 5% и дождитесь следующего часа или запустите скрипт вручную.

Шаг 5: Использование графических утилит (для десктопов)

Если вы работаете в графическом окружении (GNOME, KDE, XFCE), есть удобные визуальные инструменты:

  • Disk Usage Analyzer (baobab) — входит в GNOME. Показывает круговые и древовидные диаграммы.
    baobab /home
    
  • Filelight — для KDE, отображает использование в виде концентрических кругов.
    sudo apt install filelight  # Debian/Ubuntu
    filelight ~
    
  • QDirStat — кроссплатформенный, показывает не только размер но и количество файлов.

Установите через менеджер пакетов и запустите из меню приложений или терминала.

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

  1. Для df и du: Выполните команды и убедитесь, что вывод соответствует ожиданиям. Например, df -h должен показать актуальное использование.
  2. Для ncdu: Запустите на тестовой директории (например, ~/Downloads) и проверьте, что интерфейс отображает файлы и папки.
  3. Для автоматического мониторинга:
    • Запустите скрипт вручную: sudo /usr/local/bin/disk-monitor.sh
    • Проверьте почту (или логи, если email не настроен).
    • Посмотрите записи в системном логе: grep disk-monitor /var/log/syslog (или journalctl).

Если все работает, вы успешно настроили мониторинг!

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

1. Ошибки "Permission denied" при использовании du

Причина: Нет прав на чтение某些 системных директорий. Решение: Запускайте du с sudo (осторожно!) или используйте 2>/dev/null для подавления ошибок. Для полной картины выполните sudo du -sh /var (только если точно знаете, что делаете).

2. du показывает больше места, чем df

Причина:

  • Удаленные, но все еще открытые процессыми файлы (например, логи, которые удалили, но процесс пишет в них). Они занимают место на диске, но не видны в ls.
  • Зарезервированное пространство для root (обычно 5% в ext4), которое du не учитывает. Решение: Найдите такие файлы:
sudo lsof | grep deleted

Завершите процесс или скопируйте файл, затем перезапустите сервис.

3. ncdu работает очень долго на больших файловых системах

Причина: Анализ миллионов файлов требует времени. Решение: Ограничьте анализ конкретной директорией (не /), или используйте --exclude для пропуска кэшей (например, ncdu --exclude /proc --exclude /sys /).

4. Автоматический скрипт не отправляет email

Причина: Не настроен MTA (почтовый агент) или указан неверный email. Решение:

  • Установите mailutils и настройте локальный MTA (например, postfix).
  • Для теста отправьте письмо вручную: echo "test" | mail -s "test" you@example.com.
  • Проверьте, что скрипт выполняется от root (через sudo crontab -e).

5. Символические ссылки и du

Причина: По умолчанию du не следует за символическими ссылками, но если использовать -L, может зациклиться. Решение: Избегайте -L при анализе системных директорий. Для конкретных случаев используйте du -L с осторожностью.


Теперь вы вооружены знаниями, чтобы никогда не быть застигнутыми врасплох заполнением диска. Регулярный мониторинг — это маленький объем работы, который спасает от больших проблем. Удачи в администрировании!

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

Как проверить, какие папки занимают больше всего места?
Как настроить оповещение при заполнении диска на 90%?
Почему `du` показывает больше места, чем `df`?
Можно ли мониторить диски в реальном времени?

Полезное

Проверка общего использования диска командой df
Анализ использования конкретных директорий с помощью du
Установка и использование ncdu для интерактивного анализа
Настройка автоматического мониторинга через cron
Использование графических утилит (для десктопов)