Почему `du` в действии WSL дает размер каталога больше, чем машинная память?
Я столкнулся с вопросом, пытаясь выяснить, какие файлы на моем компьютере занимают больше всего места. Вот информация об общем объеме памяти компьютера, найденная в подсистеме Windows для Linux (WSL) /bash
bballdave025@WORK:~$ df -h /mnt/c Filesystem Size Used Avail Use% Mounted on C: 239G 231G 7.8G 97% /mnt/c
Обратите внимание, что мой вопрос не о том, как очистить пространство.
Я начал с проверки Program Files
каталога.
bballdave025@WORK:~$ du -sh /mnt/c/Program\ Files/ du: cannot read directory '/mnt/c/Program Files/Microsoft Policy Platform/authorityDb': Permission denied du: cannot read directory '/mnt/c/Program Files/Microsoft SQL Server/130/Shared/ErrorDumps': Permission denied du: cannot read directory '/mnt/c/Program Files/WindowsApps': Permission denied 2.5T /mnt/c/Program Files/
Главный выпуск
Мой WSL bash
du
говорит мне, что на моей машине (которая имеет 239GB
памяти,) мой Program Files
каталог принимает до 2.5TB из 239GB
доступной памяти. Как будто я держу две пинты воды во рту, не глотая. (Это просто, чтобы показать соотношение размеров - моя проблема не связана с водой.)
Кстати, у меня нет прав администратора - нет, sudo !!
чтобы решать любые вопросы. Я оставлю вне Permission denied
ошибки (которые будут приходить без реального sudo
), как я продолжаю писать этот пост. Также обратите внимание, что я работаю на компьютере, поэтому есть вещи, к которым у меня нет доступа.
Основной вопрос: существует ли относительно простой способ проверить использование диска в моей ситуации, то есть проверить использование диска на C:
диске Windows с помощью подсистемы Windows для Linux?
Вторичный вопрос: какого черта здесь происходит? Почему я получаю сообщение о том, что мой Program Files
каталог занимает в 10 раз больше места, чем на моем компьютере?
Кстати ... Windows говорит мне, что Program Files
имеет размер 4.83 GB
, факт, который я нашел, используя File Explorer
, щелкнув правой кнопкой мыши на Program Files
папке и выбрав «Свойства»
Мои попытки найти решение
Моей первой мыслью было, что могут быть какие-то символические ссылки или материалы для отображения дисков для программного обеспечения компании, антивирусной программы или чего-то еще, поэтому я зашел на man
страницу du
. Я нашел следующие два флага, которые, как я думал, могут помочь.
-P, --no-dereference don't follow any symbolic links (this is the default) -x, --one-file-system skip directories on different file systems
Однако du -shP /mnt/c/Program\ Files/
, du -shx /mnt/c/Program\ Files/
и даже du -shPx /mnt/c/Program\ Files/
дал мне 2.5T
. В этом отношении, так же вариант, который должен следовать по символическим ссылкам, du -shL
. Это вывод 2.5T
. То же самое для других, возможно, связанных вариантов, которые я пробовал, du -shD
и du -shH
дал то же самое - 2.5T
для всех них.
Моя следующая мысль состояла в том, что, возможно, ярлыки Windows портят вещи, поэтому я постарался исключить их. (Я не знаю, действительно ли этот код предотвращает следующие ярлыки, но я подумал, что стоит попробовать.) Никаких кубиков.
bballdave025@WORK:~$ du -sh --exclude=*.lnk /mnt/c/Program\ Files/ 2.5T /mnt/c/Program Files/
Я мог оставить позади предрассудки и попробовать что-нибудь из <shudder> Windows Command Line </shudder>
своих старых PowerShell
навыков. Я думаю, я мог бы даже прикусить пулю и перейти к каждому каталогу в File Explorer
графическом интерфейсе, щелкнуть каждую папку, выбрать «Свойства», найти, какой подкаталог занимает больше места, войти в каталог с наибольшим использованием памяти и повторить щелчок по каждой папке ... [спать] ...
... Однако меня интересует, почему я получаю этот странный результат. Когда я смотрю на это Program Files (x86)
, я получаю результат, который похож на то, как я засунул в рот футбольный мяч (неамериканский). (Еще раз, я говорю с точки зрения соотношения размеров; объем моего рта не связан с моей проблемой.)
bballdave025@WORK:~$ du -sh /mnt/c/Program\ Files\ \(x86\)/ 11T /mnt/c/Program Files (x86)/
(Windows / File Explorer
сообщил о размере 22,8 ГБ ... после того, как я подождал 30 секунд.)
Источники и попытки
Из этого ответа суперпользователя у меня появилась идея проверить, что моя ситуация не
Удаленные файлы, вероятно, все еще открыты процессом.
bballdave025@WORK:~$ lsof -a +L1 /mnt/c/Program\ Files/ bballdave025@WORK:~$
Поскольку не было никакого вывода, я предполагаю, что никакие файлы, которые я удалил, все еще не открыты процессом.
Я также посмотрел на этот вопрос и ответил о разных du
результатах на Linux и Cygwin. Однако расхождения в размере, описанные в этом вопросе, были крошечными, поэтому я не считаю, что проблема похожа. Хотя я уверен, что
Тогда нет ничего удивительного в том, что один и тот же набор файлов использует диск разного размера [sic] при хранении в разных файловых системах.
Я действительно думаю, что это сюрприз для того же набор файлов, чтобы использовать любого отличающегося размера диска, когда они действительно хранится в одном месте, даже если существует различные базовые способы доступа к ним.
Следующие шаги
Я решил создать папку на моем C:
диске, положить небольшой файл и убедиться, что размер файла соответствует ожидаемому.
bballdave025@WORK:~$ mkdir -p /mnt/c/Users/bballdave025/little_guy bballdave025@WORK:~$ echo "This should make a small file." > /mnt/c/Users/bballdave025/little_guy/small_file.txt bballdave025@WORK:~$ du -sh /mnt/c/Users/bballdave025/little_guy/small_file.txt 17K /mnt/c/Users/bballdave025/little_guy/small_file.txt bballdave025@WORK:~$ du -shPx /mnt/c/Users/bballdave025/little_guy/ 17K /mnt/c/Users/bballdve025/little_guy/
17KB кажется большим для этого маленького текстового файла. Если у нас есть байт на символ, это даст нам 31 байт. Я не знаю, du
поможет ли это упражнение - создание текстового файла и проверка - ответить на вопрос, но это было частью моих усилий.
Я застрял. Я действительно не хочу нажимать на папки. Я также хочу знать, почему у меня такое странное поведение. Есть идеи?
Сведения о системе
bballdave025@WORK:~$ uname -a | head -n 1 Linux WORK 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux bballdave025@WORK:~$ bash --version | head -n 1 GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu) bballdave025@WORK:~$ systeminfo.exe | sed -n 's/^OS\ *//p' Unable to translate current working directory. Using C:\Windows\System32 Name: Microsoft Windows 10 Enterprise Version: 10.0.15063 N/A Build 15063 Manufacturer: Microsoft Corporation Configuration: Member Workstation Build Type: Multiprocessor Free
0 ответов на вопрос
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
14
PDF Viewer в Windows
-
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...
-
1
Как я могу получить доступ к принтеру Windows Vista из Ubuntu по сети?
-
6
Просмотр журнала в Windows
-
3
Фоновая проблема Windows с двумя экранами