Вопрос или проблема
Я столкнулся с проблемой полного пространства на диске в Linux. Когда я проверил с помощью команды df
, то обнаружил, что директория “https://unix.stackexchange.com/” занимает 100%. Чтобы выяснить, какие папки занимают много места, я выполнил cd /
и du -sh
. Но выполнение команды занимает очень много времени. В конечном итоге я хочу получить информацию о том, какие топовые непосредственные подпапки папки “https://unix.stackexchange.com/” занимают большое пространство на диске. Может кто-нибудь подсказать команду для этого.
du -h --max-depth=1 / | sort -h -r
Это покажет каждую папку в /
, включая сам /
.
Имейте в виду, что это может занять много времени для сканирования всех файлов. Если вам нужны конкретные размеры подпапок в папке, указывайте точный путь к папке вместо /
или просто пропустите /
, если вы уже находитесь в этой папке.
-h
опция показывает размеры в удобном для человека формате--max-depth=1
указывает команде углубляться только на 1 уровень в папке/
sort -h -r
сортирует результаты по удобочитаемым размерам, а-r
указывает команде выводить результаты в обратном порядке (от больших к маленьким директориям)
Эта команда выведет 15 самых крупных папок в порядке убывания:
du -xhS | sort -h | tail -n15
Мы используем флаг -x
, чтобы пропустить папки на отдельных файловых системах.
-h
в команде du
выводит результат в удобочитаемом формате, sort -h
затем может упорядочить это по порядку.
-S
в команде du
означает, что размер подпапок исключается.
Вы можете изменить номер в tail
, чтобы посмотреть меньшее или большее количество. Очень удобная команда.
Еще два инструмента командной строки с открытым исходным кодом, которые отображают наибольшее использование дискового пространства:
ncdu : доступен в репозиториях большинства дистрибутивов Linux.
Top Disk Usage (tdu) : один статический бинарный файл без зависимостей, написанный на Golang.
Я всегда использую
cd /
du -sch ./*
Это покажет мне все папки из корневой папки и их используемое дисковое пространство.
Получив информацию о использовании от всех родительских директорий, перейдите в следующую дочернюю папку и повторите команду ‘du’ из выше. Повторяйте эти шаги, чтобы найти свои большие файлы и папки.
Вам нужно будет переходить от папки к папке, чтобы выяснить, что происходит.
Правка: возможно, вам также нужен флаг “x”, если у вас смонтировано несколько разделов. ‘x’ будет считать использование только в одной файловой системе и исключать другие монтирования.
du -schx ./*
Команда du -hs /*
перечислит все верхние директории отдельно.
Следующая команда сработала:
du -xh -d 1 | sort -h
Ответ или решение
Чтобы выявить подкаталоги директории /
, которые занимают много места на диске, можно использовать команду du
в сочетании с дополнительными параметрами для получения более информативного вывода. Ниже приведен несколько подходящих команд и методов для решения этой проблемы.
Способы определения затрат на дисковое пространство для подкаталогов
-
Использование команды
du
с сортировкой:
Если вам нужно увидеть, какие подкаталоги занимают больше всего места в корневой директории, выполните следующую команду:du -h --max-depth=1 / | sort -h -r
- Параметры:
-h
: выводит размеры в удобочитаемом формате (например, 1K, 234M, 2G).--max-depth=1
: ограничивает глубину сканирования до одного уровня подкаталогов.sort -h -r
: сортирует результаты по человеку понятному размеру в обратном порядке (от большего к меньшему).
- Параметры:
-
Просмотр топ-15 самых больших каталогов:
Чтобы ограничить вывод только 15 самыми крупными каталогами, можно использовать следующую команду:du -xh --max-depth=1 / | sort -h | tail -n 15
- Параметры:
-x
: игнорирует каталоги на других файловых системах.-S
: не учитывает размеры подкаталогов при статистике.
- Параметры:
-
Использование дополнительных утилит:
Также можно использовать специализированные утилиты для анализа затрат дискового пространства, такие как:ncdu
: легкая программа для анализа использования дискового пространства.tdu
: инструмент для отображения использования дискового пространства, написанный на Go. Он проста в установке и не имеет зависимостей.
Установить
ncdu
можно через менеджер пакетов вашей операционной системы. Например:sudo apt install ncdu
После установки можно просто запустить:
ncdu /
-
Команда
du
для текущего каталога:
Если вы уже находитесь внутри каталога, который хотите проанализировать, используйте следующую команду:du -sch ./* | sort -h -r
- Параметры:
-s
: останавливает подробный вывод для подкаталогов.-c
: добавляет общее количество занимаемого пространства.
- Параметры:
-
Полный отчёт о расходах:
Чтобы получить полный список текущего каталога:du -schx ./*
Этот метод также исключает каталоги, которые находятся на других файловых системах.
Заключение
Используя указанные команды, вы сможете быстро выявить, какие подкаталоги занимают наибольшее пространство на диске. Обратите внимание на необходимость использовать опции для исключения монтированных файловых систем, если это необходимо. Тщательно анализируйте полученные данные для принятия решений по освобождению пространства на диске.