Перезагрузка Ubuntu в Windows без перезагрузки Windows?

Перезагрузка Ubuntu в Windows без перезагрузки Windows?

Можно ли перезагрузить подсистему Ubuntu без перезагрузки моей системы?

Я пытался использовать эту shutdownкоманду после установки некоторых обновлений, но, похоже, здесь это невозможно.

WSL. Требуется перезагрузка. Невозможно завершить работу системы

Текст скриншота:

~$ bin/rcheck.sh
Reboot required.
~$ sudo shutdown -r now
shutdown: Unable to shutdown system

решение1

Вы не можете перезагрузить дистрибутив одной командой. Вы должны выключить и загрузить дистрибутив двумя командами. Если вы запуститеwsl.exeвместо wsl, то это работает как в WSL Bash, так и в CMD.

Посмотрите список дистрибутивов и их текущее состояние:

wsl.exe -l -v

Выключите все: Build 18917+

wsl.exe --shutdown

Завершить работу определенного дистрибутива: Windows 1903+

wsl.exe -t <DistroName>

Загрузите дистрибутив по умолчанию (отмечен значком *):

wsl.exe

Загрузите определенный дистрибутив:

wsl.exe -d <DistroName>

Старые версии

# PowerShell (admin)
Restart-Service LxssManager

# or CMD (admin)
net stop LxssManager
net start LxssManager

введите описание изображения здесь

решение2

В административной командной строке PowerShell:Restart-Service LxssManager

решение3

Начиная с Windows 10 версии 1803, закрытие всех окон терминала WSL не будет завершать фоновые процессы по умолчанию, если только файл не /var/run/reboot-requiredприсутствует. Этот файл будет автоматически создан apt в Ubuntu, когда обновление требует перезагрузки, но если вы хотите вручную перезагрузить подсистему, вы можете создать файл самостоятельно:

sudo touch /var/run/reboot-required

Я не тестировал это на других дистрибутивах, доступных в Microsoft Store. Альтернативное решение — убить все процессы самостоятельно:

sudo killall -r '.*'

решение4

Следующая команда позволяет выполнить завершение работы из WSL2 с помощью команды wslreboot(или любой другой пользовательской команды).

Технически, wslshutdownбудет более подходящим для кода ниже:

Создать псевдоним:

sudo nano ~/.bash_aliases

Добавить строку:

alias wslreboot='history -a && cmd.exe /C wsl --shutdown'

history -aгарантирует, что история команд bash будет сохранена перед завершением работы.

Включить псевдоним:

Перезапустить WSL

cmd.exe /C wsl --shutdown

или введите

source .bash_aliases

Использовать

теперь вы можете напечатать

wslreboot  

выключить


Я думаю, вы могли бы использовать вариацию вышеприведенного кода для запуска пакетного файла со строками:

wsl --shutdown
wsl

для правильного перезапуска.

Связанный контент