答案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
以便正确重启。