Назад | Перейти на главную страницу

Посмотрите, какой каталог занимает место, без учета других точек монтирования

Мне часто приходится очищать некоторые каталоги, потому что они переполнены. Давайте принимать /var в качестве примера, поскольку это распространенный по понятным причинам.

Чтобы увидеть, какие подкаталоги занимают много места, я использую du -sh /var/*. К сожалению, у меня есть огромные данные в подкаталогах /var, которые расположены на других разделах, кроме /var (например. /var/chroot) и зря сильно замедляет процесс.

Сейчас du имеет -x флаг, исключающий другие точки монтирования. Он отлично работает при выполнении du -shx /var но не с du -shx /var/* поскольку * расширяется оболочкой, поэтому /var/chroot явно отправлено du.

Другой вариант, который мне предложили, заключался в использовании find /var -xdev -mindepth 1 -maxdepth 1 -exec du -sh {} \+ но опять же, даже если find не следовать другие точки монтирования, это все еще печатает их и передает их du, следовательно, снова не смог достичь своей цели.

Прежде чем я напишу ужасную функцию bash (или программу perl / python), которая анализирует df или mount в цикле, знает ли кто-нибудь чистый способ достичь того, что я пытаюсь сделать?

похоже, что вам нужно это:

du -hx --max-depth 1 /var

Получил ответ от коллеги:

du -hx --max-depth=1 /var

делает свое дело.