Відповіді:
Вимкніть все: Build 18917+
wsl --shutdown
Скасувати конкретний дистрибутив: Windows 1903+
wsl -t <DistroName>
# PowerShell (admin)
Restart-Service LxssManager
# CMD (admin)
net stop LxssManager
net start LxssManager
net
працював у cmd (з адміном). Щойно перевірив, що мій bat-файл sc
не працював у Windows OS Build 1809.
Оскільки Windows 10 версії 1803, закриття всіх вікон терміналів WSL не знищує фонові процеси за замовчуванням, якщо файл /var/run/reboot-required
не присутній. Цей файл буде автоматично створений apt в Ubuntu, коли для оновлення потрібна перезавантаження, але якщо ви хочете вручну перезавантажити підсистему, ви можете створити файл самостійно:
sudo touch /var/run/reboot-required
Я не перевіряв цього на інших дистрибутивах, доступних у магазині Microsoft. Альтернативне рішення - вбити всі процеси самостійно:
sudo killall -r '.*'
sudo
:sudo killall -r '.*'
sudo touch /var/run/reboot-required
. Насправді, схоже, наявність файлу змушує WSL знищити всі фонові процеси та вимкнути підсистему, коли всі вікна терміналу закриті, тож ви також можете зловживати цим.
killall
прекрасно працював для мене. Не потрібно було чіпати reboot-required
.
У адміністративному запиті PowerShell: Restart-Service LxssManager
WARNING: Waiting for service 'LxssManager (LxssManager)' to stop...
Просто вийти з оболонки 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:~$
Windows 10 Build 17046
. @Луїс Ви б не хотіли відредагувати це у своїй відповіді?
Просто відкрийте вікно cmd як адміністратор і запустіть ці команди, щоб перезапустити його.
net stop LxssManager
net start LxssManager
timeout /t 3
команда (додайте 3 секунди).
Я створив *.bat
файл, і запустивши його, перезавантаження виконується протягом 10 секунд. (Я вражений тим, як швидко перезавантажуються речі. І, будь ласка, порадьте, чи мій підхід у довгостроковій перспективі спричинить серйозні проблеми.)
Помістіть у WSL_reboot.bat
файл наступні два рядки та запустіть його щоразу, коли вам потрібно перезавантажити WSL в Windows 10.
net stop LxssManager
net start LxssManager
Примітка щодо оновлення : за моїм останнім "оновленням" ОС Windows, збірка 1809 більше не любить sc
команди.
Побічна примітка: потрібно перезавантажити "ядро" WSL, коли він / вона форматує диск з літерними ознаками через Провідник Windows. Однак не зовсім вирішили побічний продукт, де ls
команда отримає таку помилку. Пов’язаний пост-від-WSL @ Github ; Пов’язані повідомлення після публікації . Перерве посилання, якщо мені вдасться вирішити помилку побічних продуктів.
ls: 'System Volume Information': Permission denied
...
d--x--x--x 1 llinfeng llinfeng 512 Jan 15 11:00 'System Volume Information'/
...
sc
замість цього net
, як у відповіді @ samdd
net
в той час не працював з моїм Windows 10? sc
мабуть, тоді працювали. Я повинен був вказати номер збірки Windows.
net
замість цьогоsc
, як у відповіді @ llinfeng