Рейтинг:1

Не удается удалить файл в WSL Ubuntu 20.02.2

флаг ru

Вероятно, это связано с закрытием WSL, когда процесс удаления не завершен. И теперь я хочу удалить этот файл.


лс-лба вывести это

root@A12581:/HelloWorld/android-kernel/.repo/projects/prebuilts/boot-artifacts.git# ls -lba
ls: невозможно получить доступ к '.repo_config.json': нет такого файла или каталога
всего 0
drwxr-xr-x 1 root root 4096 28 января 09:27 .
drwxr-xr-x 1 root root 4096 27 января 15:56 ..
-????????? ? ? ? ? ? .repo_config.json

но я не могу удалить этот файл/удалить папку, содержащую этот файл/переименовать папку, содержащую этот файл


моя среда:

WSL1

Убунту 20.04.2 ЛТС

флаг in
Обычно это признак повреждения файловой системы. К сожалению, в WSL1 нет механизма восстановления файловых индексов. Вы можете сделать себе одолжение и перестроить контейнер... возможно, с помощью WSL2.
Nate T avatar
флаг it
В сообщении об ошибке говорится, что файл не существует. Убедитесь, что путь существует и находится внутри вашей файловой системы wsl. Скорее всего, у вас либо опечатка в пути к файлу, либо файл находится за пределами файловой системы WSL (например, он находится на вашем диске Windows). Помните, что wsl работает с ресурсами в файловой системе wsl, которая обычно создается рядом с вашим диском C, а часто и на совершенно другом диске.
NotTheDr01ds avatar
флаг vn
Вы когда-нибудь добились прогресса в этом? Похожая проблема возникла сегодня в стеке Unix и Linux.
user16387400 avatar
флаг ru
@ NotTheDr01ds извините, но, похоже, нет другого пути, кроме как сделать резервную копию и переустановить всю систему.
Рейтинг:0
флаг vn

@matigo, вероятно, прав с комментарием о повреждении файловой системы. Я также согласен с тем, что использование ext4 в WSL2 почти наверняка более надежно, если оно соответствует вашим потребностям.

Если вы еще этого не сделали, сделайте wsl --shutdown (из PowerShell), чтобы убедиться, что все дескрипторы/блокировки сняты. Затем перезапустите и повторите попытку. У него относительно небольшой шанс сработать, но стоит попробовать, так как он такой быстрый.

Если это не сработает, я бы рекомендовал следующее для попытки восстановить экземпляр WSL1.

По сути, сделайте круговой обход экземпляра WSL1 через wsl --экспорт/wsl --импорт. смола туда и обратно, который выполняет этот процесс должен (надеюсь) удалить поврежденный файл при архивировании или разархивировании, одно или другое.

Из PowerShell:

# Подтвердить имя дистрибутива
wsl -l -v
# Имя дистрибутива может быть "Ubuntu" или "Ubuntu-20.04" - соответствующим образом отредактируйте следующие строки:
wsl --shutdown
компакт-диск ~\Документы
mkdirWSL\изображения
mkdir WSL\экземпляры\UbuntuRecovery
wsl --export Ubuntu WSL\images\ubuntu.tar
wsl --import UbuntuRecovery WSL\instances\UbuntuRecovery WSL\images\ubuntu.tar --версия 1
wsl -d UbuntuRecovery

Посмотрите, исчез ли файл или его можно удалить в этом новом экземпляре.

Если это так, и если в новом экземпляре все остальное выглядит нормально, то:

  • Установите имя пользователя по умолчанию в этом экземпляре через /etc/wsl.conf файл за этот ответ.
  • Выйти из экземпляра
  • Опять же, из PowerShell:
    wsl --terminate UbuntuRecovery
    wsl --set-default UbuntuRecovery
    

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

Наконец, удалите исходный поврежденный экземпляр с помощью:

wsl --отменить регистрацию Ubuntu

Важный: Это разрушительный операция. Убедитесь, что все работает, как задумано. С другой стороны, мы уже сделали резервную копию ...

Вы также можете удалить «Приложение» Ubuntu, которое было установлено из Магазина на тот момент.

Вы запустите через wsl (если вы еще этого не сделали) или Windows Terminal с момента Ubuntu.exe (или же Ubuntu2004.exe) команда исчезнет.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.