答案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
存在。當更新需要重新啟動時,該檔案將由 Ubuntu 上的 apt 自動創建,但如果您想手動重新啟動子系統,您可以自行建立該檔案:
sudo touch /var/run/reboot-required
我尚未在 Microsoft Store 中提供的其他發行版上對此進行測試。另一種解決方案是自行終止所有進程:
sudo killall -r '.*'
答案4
以下允許使用命令
wslreboot
(或任何自訂命令)從 WSL2 內關閉。
從技術上來說,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
以便正確重新啟動。