无法重启WSL2,LxssManager挂起处于停止状态,如何重启? [已关闭]

问题描述 投票:0回答:5

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

如何重新启动 wsl?

ubuntu wsl-2
5个回答
139
投票

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

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

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

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

现在您应该能够使用 'wsl shutdown 和 wsl 正常重新启动 wsl。


3
投票

我遇到了同样的情况,重新启动 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)。确保您以管理用户身份登录(比“运行身份”更强大)。


3
投票

在 PowerShell 7 中您可以使用

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

查找进程的PID。在我的例子中,返回对象的

State
Stop Pending
。使用返回的PID来杀掉
LxssManager
:

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

这使得

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


2
投票

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

在此线程中解释了为什么此类进程几乎无法杀死https://github.com/microsoft/WSL/issues/1086


-1
投票

对于 wsl2 尝试:

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

taskkill /F /FI "IMAGENAME eq wsl.exe"
taskkill /F /FI "IMAGENAME eq wslhost.exe"
taskkill /F /FI "IMAGENAME eq wslservice.exe"
© www.soinside.com 2019 - 2024. All rights reserved.