Как посмотреть свободное место на диске в Linux: команды df -h и du -sh
На сервере Linux заканчивается свободное место, сервисы выдают ошибку No space left on device, базы данных MySQL/PostgreSQL аварийно останавливаются, а пользователь не знает, какие папки и логи забили жесткий диск.
Шаг 1. Проверяем общее свободное место (команда df)
Откройте терминал и введите команду:
df -hФлаг -h означает Human-readable (показывать размеры в удобных гигабайтах и мегабайтах, а не в байтах).
Пример вывода:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 46G 1.5G 97% /Внимательно посмотрите на строку с точкой монтирования / (корень системы). Если в столбце Use% значение больше 90-95%, диск срочно нужно чистить.
Шаг 2. Ищем самые «тяжелые» папки в корне диска (команда du)
Чтобы понять, какая именно директория съела всё место, выполните:
sudo du -sh /* 2>/dev/null | sort -hr | head -n 10du -sh /*— посчитать суммарный размер каждой папки в корне;2>/dev/null— скрыть системные предупреждения об отсутствии доступа к служебным папкам;sort -hr— отсортировать папки от самых больших к самым маленьким;head -n 10— показать только топ-10 самых тяжелых директорий.
Шаг 3. Углубляемся в найденную проблемную папку
Чаще всего место забивают папки /var/log (старые логи) или /var/lib/docker (образы контейнеров). Перейдите в найденную большую папку и проверьте её содержимое:
sudo du -sh /var/log/* | sort -hr | head -n 10Шаг 4. Быстрый поиск файлов размером более 500 МБ
Вы можете мгновенно найти все файлы-гиганты по всей системе одной командой:
sudo find / -type f -size +500M -exec ls -lh {} + 2>/dev/null Частые вопросы (FAQ)
В чем разница между командами df и du?
df (Disk Free) показывает общий объем, занятое и свободное место на всех смонтированных дисках и разделах. du (Disk Usage) сканирует конкретные папки и считает точный размер файлов внутри них.
Почему команда df показывает 100% занятости, но команда du не находит больших файлов?
Такое бывает, если лог-файл был удален командой rm, но работающий процесс (например, Nginx) все еще держит его открытым. Перезапустите сервис или найдите 'удаленные открытые файлы' командой: lsof | grep deleted.
Безопасно ли удалять файлы из папки /var/log?
Архивные файлы логов с расширением .gz и номерами на конце (например, syslog.1.gz) можно удалять безопасно. Текущие активные файлы логов лучше очищать командой обнуления: truncate -s 0 /var/log/syslog.
Как очистить кэш пакетов apt в Ubuntu, чтобы освободить место?
Выполните команду sudo apt clean, которая удалит все скачанные установочные deb-пакеты из директории /var/cache/apt/archives/.