Как узнать свободное место на диске в Linux: команды df -h и du -sh
Почему переполняется диск в Linux и чем это грозит
Когда на сервере Linux заканчивается свободное дисковое пространство (Disk Full / No space left on device), операционная система и сервисы начинают экстренно падать. База данных MySQL/PostgreSQL останавливается, веб-сервер перестает отдавать страницы, а системные демоны не могут записать даже строчку в журнал логов. Часто новичку сложно понять, сколько места осталось и какая именно папка «сожрала» всю память.
Основные утилиты для проверки диска
| Команда | Что делает | Аналог в Windows |
|---|---|---|
df -h | Показывает общий размер разделов диска и сколько процентов свободно в удобном виде (ГБ/МБ). | Окно «Мой компьютер» со списком дисков C: и D: |
du -sh /* | Считает реальный вес каждой папки в указанной директории. | Свойства папки -> Размер на диске |
Пошаговый поиск пожирателей дискового пространства
Шаг 1: Проверка общего свободного места (df -h)
Подключитесь к серверу по SSH и введите базовую команду:
df -hФлаг -h означает Human-readable (выводить гигабайты G и мегабайты M вместо непонятных байтов). Обратите внимание на строку с точкой монтирования Mounted on: / (корневой раздел). Если в колонке Use% стоит 95-100% — сервер в критическом состоянии.
Шаг 2: Поиск самых тяжелых папок в корне системы (du)
Чтобы понять, какая директория заняла диск, выполните команду расчета размера каталогов первого уровня:
sudo du -sh /* 2>/dev/null | sort -hr | head -n 10Пояснение: мы считаем вес папок, перенаправляем ошибки доступа в пустоту, сортируем по убыванию (sort -hr) и показываем топ-10 самых тяжелых директорий (head -n 10).
Шаг 3: Углубление в проблемную папку
Если тяжелой оказалась, например, папка /var (где часто лежат логи или базы данных), перейдите внутрь и повторите команду:
sudo du -sh /var/* 2>/dev/null | sort -hr | head -n 10Если вы видите, что папка /var/log весит десятки гигабайт, очистите старые архивы логов командой:
sudo journalctl --vacuum-size=200MТиповые ошибки администраторов
- Использование rm для открытого активного лог-файла: Если удалить файл лога (например,
rm access.log), который прямо сейчас пишет Nginx, место на диске НЕ освободится, пока служба не перезапустится. Правильно очищать файл командой обнуления:> /var/log/nginx/access.log. - Забытые inodes (файловые дескрипторы): Иногда команда
df -hпоказывает 50% свободного места, но создать файл нельзя. Проверьте свободные иноды командойdf -i— миллионы мелких файлов сессий PHP могут забить таблицу дескрипторов.
Команда ITSTM настроит автоматическую ротацию логов (logrotate), настроит мониторинг Zabbix/Prometheus с алертами в Telegram и выделит безопасные квоты диска.
Частые вопросы (FAQ)
Что означает вывод 'tmpfs' в списке команды df -h?
tmpfs — это виртуальная файловая система, расположенная в оперативной памяти (RAM). Она используется системой для временных быстрых файлов и очищается при перезагрузке.
Почему команда du -sh показывает меньше места, чем занято по данным df -h?
Такое бывает, если удаленный файл все еще удерживается запущенным процессом. Процесс продолжает писать в дескриптор, место заблокировано. Найти такие файлы можно командой: lsof | grep deleted.
Как быстро найти 5 самых больших файлов на всем сервере?
Выполните команду: sudo find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 5
Безопасно ли удалять файлы из папки /tmp?
Да, в /tmp хранятся временные файлы. Однако удалять их лучше специальной утилитой tmpwatch или системным скриптом очистки, чтобы не повредить сокеты запущенных прямо сейчас служб.