Відповіді:
Вимкніть все: 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