无法重启WSL2,LxssManager在停止状态中挂起,如何重启?

43

我无法重新启动 wsl2,执行命令 wsl --shutdown 和其他任何 wsl 命令都会一直挂起。

同时,我发现服务LxssManager处于停止状态也会一直挂起。

我该如何重新启动wsl?

5个回答

135

看起来 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。


7
命令小改进:tasklist /svc /fi "imagename eq svchost.exe" | findstr LxssManager意思是查找所有运行 LxssManager 的 svchost 进程。 - Peachyz
1
谢谢,这很有帮助!在Windows 11中,您还可以在任务管理器的“服务”选项卡中找到服务的PID。键入“L”等将带您到以该字母开头的服务。 - ps2goat
哇,谢谢你!WSL有时会在睡眠后卡住,我讨厌因为无法响应的服务而不得不重新启动。你救了我的一天。 - japtain.cack
1
最近在Windows 11中,每次从睡眠状态唤醒电脑时,我都会遇到这个问题。感谢您提供的解决方法! - Damien McDonnell
尽管我最初是在寻找“Docker永远启动”的解决方案时来到这里的,但按照描述杀死LxssManager以非破坏性的方式解决了我的问题。谢谢。 - Xenox
或者你可以使用 tasklist /svc /fi "services eq LxssManager" - Laszlo

3
我曾经遇到过同样的问题,重新启动LxssManager服务解决了我的问题。
以管理员权限启动命令提示符(我是用普通用户登录),并复制粘贴以下命令以运行:
sc.exe queryex LxssManager
sc.exe stop LxssManager
sc.exe start LxssManager
sc.exe queryex LxssManager

顺便说一句,如果第二个queryex命令后LxssManager PID没有改变,则停止失败,您应该尝试在切换到管理员用户后运行命令。

另外,如果您仍然无法停止服务,应该使用任务管理器在“详细信息”选项卡中的“结束进程树”功能(使用queryex命令显示的PID)。确保您以管理员身份登录(比“以...身份运行”更强大)。


1
如果LxssManager试图停止但永远无法结束,那该怎么办?(我快疯了) - Stefano Scarpanti
1
@StefanoScarpanti 我曾经遇到过这种情况(在命令提示符下以普通用户身份停止命令后,任务管理器显示正在停止)。我无法从以管理员身份运行的任务管理器中“结束进程树”。但是当我切换到管理员用户时,我成功地停止了服务。当然,重新启动也可以达到同样的效果,但需要更长时间。 - Claudiu Cruceanu

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在我的机器上恢复了响应。


4
这看起来非常有帮助,但在管理员权限的PowerShell中却提示“访问被拒绝”。 - Dave McMordie

2

-1

针对wsl2,请尝试以下操作:

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

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

2
我得到了 ERROR: 无法识别搜索过滤器。 - codeananda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接