du не отображает размер домашнего каталога

Вопрос или проблема

du -sh $HOME

зависает во время выполнения. Вот последние несколько строчек вывода:

du: невозможно получить доступ к '/home/user/.local/share/waydroid/data/media/0/DCIM/Camera': Доступ запрещён
du: невозможно получить доступ к '/home/user/.local/share/waydroid/data/gsi/dsu': Доступ запрещён
du: невозможно получить доступ к '/home/user/.local/share/waydroid/data/gsi/ota': Доступ запрещён
du: невозможно получить доступ к '/home/user/.local/share/waydroid/data/gsi/remount': Доступ запрещён

du в конечном итоге завершился, но это заняло много времени. Я помню, что мой домашний каталог имеет смонтированную файловую систему, которая очень большая. Наверняка поэтому du занял так много времени, он, должно быть, сканировал этот смонтированный каталог.

Однако я не знаю, почему du не выдал никакого дополнительного вывода после того, что я опубликовал в своём вопросе.

Обновление:

du действительно показал размер аргументов, но я пропустил это, потому что нажимал случайные кнопки, так как это занимало слишком много времени, и вывод du смешался с введёнными буквами таким образом: jk21G.

Ответ или решение

Команда du (disk usage) показывает размер директории и её поддиректорий, но иногда может сталкиваться с определёнными проблемами, как в вашем случае. Давайте рассмотрим, что произошло и как правильно использовать du для получения информации о размере вашей домашней директории без задержек и ошибок.

Проблема с du

  1. Права доступа: Вы получили ошибки Permission denied при попытке доступа к определённым каталогам, таким как /home/user/.local/share/waydroid/data/media/0/DCIM/Camera. Это свидетельствует о том, что вы не имеете прав на чтение содержимого этих директорий. Когда du сталкивается с такими проблемами, он не может отобразить размер соответствующих подкаталогов.

  2. Время выполнения: Если в вашем домашнем каталоге смонтирована файловая система большого размера, это также может замедлить выполнение команды du, так как она будет сканировать все файлы и подкаталоги.

Решение проблемы

Чтобы избежать задержек и ошибок при использовании du, вы можете попробовать следующие подходы:

  1. Игнорирование ошибок доступа: Добавьте параметр 2>/dev/null, чтобы игнорировать сообщения об ошибках. Команда будет выглядеть так:

    du -sh $HOME 2>/dev/null
  2. Сравнение с другими командами: Если вы хотите сразу получить общий размер без задержек, можете использовать:

    du -sh --exclude=/path/to/private-dir $HOME

    Здесь /path/to/private-dir — это путь к директору с ограниченным доступом, который стоит исключить.

  3. Применение флага --max-depth: Этот флаг позволяет ограничить глубину поиска, что может ускорить выполнение команды:

    du -h --max-depth=1 $HOME

    Это покажет размер всех подкаталогов на первом уровне и общий размер вашего домашнего каталога.

  4. Использование параметра -x: Если проблема заключается в смонтированных файловых системах, вы можете использовать параметр -x, который ограничивает анализ текущей файловой системой:

    du -sh -x $HOME

Подводя итоги

Теперь вы можете использовать du более эффективно, избегая ошибок доступа и уменьшив время выполнения. Также помните, что использование комбинаций параметров поможет вам получить только необходимую информацию и не отвлекаться на лишние сообщения об ошибках. Если команда всё равно будет зависать, возможно, стоит рассмотреть анализ более ограниченного набора директорий или использование других инструментов, таких как ncdu, которые могут предоставить интерактивный интерфейс для анализа использования дискового пространства.

Оцените материал
Добавить комментарий

Капча загружается...