无法重启WSL2,Lxss管理器挂起处于停止状态,如何重启?



I无法重新启动wsl2,命令wsl-shutdown和任何其他wsl命令将永远挂起。此外,我发现服务LxssManager处于停止状态,也将永远挂起。

如何重新启动wsl?

看起来挂起LxssManager服务正在阻止wsl重新启动,我找到了一种停止LxssMnager的方法,然后我就可以正常重新启动wsl了。

首先获取运行LxssManager的svchost.exe的PID,以管理员身份打开cmd并运行:

tasklist /svc /fi "imagename eq svchost.exe" | findstr LxssManager

获取返回的PID,然后以管理员身份运行任务管理器,在详细信息选项卡中,搜索包含PID的svchost.exe,右键单击它并选择"结束进程树"。

现在,您应该能够使用"wsl shutdown and wsl"正常重新启动wsl。

我也遇到了同样的情况,重新启动LxssManager服务解决了我的问题。

启动具有管理权限的命令提示符(我以普通用户身份登录(并复制和粘贴以运行以下命令:

sc.exe queryex LxssManager
sc.exe stop LxssManager
sc.exe start LxssManager
sc.exe queryex LxssManager

附言:如果在第二个queryex命令LxssManager PID之后没有不同,那么停止没有成功,您应该在将用户切换到管理命令之后尝试运行这些命令。

p.p.S.如果你仍然无法停止服务,你应该使用任务管理器";结束过程树";在"详细信息"选项卡中(使用queryex命令显示的PID(。请确保您是以管理用户身份登录的(比"以运行方式"更强大(。

在PowerShell 7中,您可以使用

Get-CimInstance -ClassName Win32_Service -Filter "Name='LxssManager'"

以找到进程的PID。在我的情况下,返回对象的StateStop Pending。使用返回的PID杀死LxssManager:

Stop-Process -Id $(Get-CimInstance -ClassName Win32_Service -Filter "Name='LxssManager'").ProcessId -Force

这使得wsl.exe在我的机器上再次响应。

如果您不能从cmd、powershell和任务管理器(在管理帐户上(终止/重新启动进程,那么对我有效的方法是使用此工具https://github.com/winsiderss/systeminformer/releases/tag/v2.39.

在这个线程中,它解释了为什么这种类型的进程几乎是不可操作的https://github.com/microsoft/WSL/issues/1086.

对于wsl2,请尝试:

在具有管理员访问权限的CMD上:

taskkill /F /FI "IMAGENAME -eq wsl.exe"
taskkill /F /FI "IMAGENAME -eq wslhost.exe"
taskkill /F /FI "IMAGENAME -eq wslservice.exe"

最新更新