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

76

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

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

Bash на Windows.  Требуется перезагрузка.  выключение: невозможно выключить систему

Луис
источник

Ответы:

101

Отключить все: Build 18917+

wsl --shutdown

Завершить конкретный дистрибутив: Windows 1903+

wsl -t <DistroName>

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

# PowerShell (admin)
Restart-Service LxssManager

# CMD (admin)
net stop LxssManager
net start LxssManager

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

samdd
источник
почему netвместо sc, как в ответе @ llinfeng
Gaia
netработал в cmd (с админом). Только что проверил, что мой bat-файл с scне работал в Windows OS Build 1809.
llinfeng
31

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

sudo touch /var/run/reboot-required

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

sudo killall -r '.*'
nyuszika7h
источник
Знаете ли вы, что я могу сделать для принудительной перезагрузки? Я хочу проверить ответ, чтобы принять его.
Луи
1
Это сработало для меня. Я должен был sudo:sudo killall -r '.*'
F21
@ Луис, я вижу, ты уже принял это, но ты можешь это сделать sudo touch /var/run/reboot-required. Фактически, кажется, что наличие файла заставляет WSL уничтожать все фоновые процессы и завершать работу подсистемы, когда все окна терминала закрыты, так что вы также можете злоупотреблять этим.
nyuszika7h
1
killallработал отлично для меня. Не нужно трогать reboot-required.
Джованни Басси
23

По административному приглашению PowerShell: Restart-Service LxssManager

regexaurus
источник
11
@RajeshS Это может быть коротким, но это действительно отвечает на вопрос.
nyuszika7h
Мне это нравится. Легко запомнить, автозаполнение с вкладкой достаточно хорошо. Забавно видеть, насколько хорошо Windows начала свою модель обслуживания с самого начала.
Луи
2
Я просто получаю это неоднократноWARNING: Waiting for service 'LxssManager (LxssManager)' to stop...
Крис Сноу
Это работает отлично. Просто сначала запустите PowerShell с правами администратора.
Эрик Калкокен
10

exitКажется, просто выход из оболочки и повторное открытие

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.

Louis@ATHENA:~$ bin/update.sh
[sudo] password for Louis:
The following packages will be upgraded:
  libssl1.0.0 openssl
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libssl1.0.0 amd64 1.0.1f-1ubuntu2.21 [830 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssl amd64 1.0.1f-1ubuntu2.21 [489 kB]
Setting up libssl1.0.0:amd64 (1.0.1f-1ubuntu2.21) ...
Setting up openssl (1.0.1f-1ubuntu2.21) ...
Del libssl1.0.0 1.0.1f-1ubuntu2.20 [830 kB]
Del openssl 1.0.1f-1ubuntu2.20 [489 kB]

Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exec bash -l
Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exit

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.
Louis@ATHENA:~$
Луис
источник
5
Это больше не работает.
Даккарон
@Dakkaron - это было, когда вопрос был задан.
Ramhound
1
Вот почему я сказал «больше». Информация о том, что этот пост устарел, важна, поэтому другим людям, у которых сейчас есть проблема, не нужно пытаться ее обнаружить, чтобы она не работала. Я не уверен, как все здесь обрабатывается, но в Stackoverflow ответ должен помочь не только человеку, который задал вопрос, но и всем остальным, кто ищет решения для той же проблемы.
Даккарон
В частности, это не работает с тех пор Windows 10 Build 17046. @ Луис, не могли бы вы отредактировать это в своем ответе?
Даккарон
У меня работает сборка 17134.
Ян Кемп
7

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

net stop LxssManager
net start LxssManager
normarth
источник
1
Добавьте несколько секунд между этими двумя командами. например, timeout /t 3команда (добавить 3 секунды).
Biswapriyo
2
Это дублирует ответ Самдда от августа.
fixer1234
Не работает ... остается в состоянии "остановки". когда я пытаюсь запустить его снова, я получаю сообщение «Служба запускается или останавливается. Пожалуйста, повторите попытку позже» ... никогда не завершается. Всегда зависает после запуска команды rsync из пакета, например "bash -c 'rsync ....'". Это кошмар.
стрелок
"Служба LxssManager останавливается ............................................ ............................. Не удалось остановить службу LxssManager. " : - /
Алекс Янсен
4

Я создал *.batфайл, и после его запуска происходит перезагрузка в течение 10 секунд. (Я поражен тем, как быстро все перезагружается. И, пожалуйста, посоветуйте, если мой подход вызовет серьезные проблемы в долгосрочной перспективе.)

Поместите следующие две строки в WSL_reboot.batфайл и запускайте его каждый раз, когда вам нужно перезагрузить WSL в Windows 10.

net stop LxssManager
net start LxssManager 

Примечание об обновлении : согласно моему недавнему «обновлению» ОС Windows, Build 1809 больше не любит scкоманду.

Примечание: необходимо перезагружать «ядро» WSL, когда он / она форматирует букву в проводнике Windows. Тем не менее, не удалось решить побочный продукт, где lsкоманда получит следующую ошибку. Related-post-from-WSL @ Github ; Связанные пост от стека . Удалит ссылку, если мне удастся решить проблему с побочным продуктом.

ls: 'System Volume Information': Permission denied
...
d--x--x--x 1 llinfeng llinfeng       512 Jan 15 11:00 'System Volume Information'/
...
llinfeng
источник
почему scвместо net, как в ответе @ samdd
Gaia
1
Я думаю, что netне работал с моим Windows 10 в то время? scДолжно быть, работал тогда. Я должен был указать номер сборки Windows.
llinfeng