WSL Ubuntu 挂起,如何重启?

Posted

技术标签:

【中文标题】WSL Ubuntu 挂起,如何重启?【英文标题】:WSL Ubuntu hangs, how to restart? 【发布时间】:2018-07-02 14:07:45 【问题描述】:

有时 WSL 在 Windows 10 上挂起。打开“Ubuntu”bash 只是挂起。有什么方法可以在不重启 Windows 的情况下重启 WSL?

【参考方案1】:

我相信当今 WSL2 最有效的方式,在 Cmd Prompt / PowerShell 中:

wsl --shutdown

【讨论】:

这对我不起作用,因为所有 wsl 命令都开始挂起。 这对我有用,谢谢。【参考方案2】:

要扩展 kev 的答案,您需要重新启动 LxssManager 服务。这可以通过使用CTRL SHIFT ESC 打开任务管理器,转到Services 选项卡,找到LxssManager 服务,右键单击并选择Restart 来完成。

【讨论】:

我在 WSL2 中找不到该进程 LxssManager :( 对我不起作用。 LxssManager 进入“Stopping”状态并挂在那里,不会启动。 @LuigiPlinge 尝试找到对应的进程并停止。这对我有帮助。 @LuigiPlinge 只需右键单击并在停止时选择开始 @LuigiPlinge 无论如何都不会启动,它会一直停止【参考方案3】:

您可以使用wslconfig(在 Windows 命令提示符或 PowerShell 中)关闭 Ubuntu:

wslconfig /t Ubuntu

它会在你下次打开 shell 时自动启动。

【讨论】:

我们在 ubuntu 的终端中执行此操作? @LachezarRaychev 您应该在 Windows 命令提示符下发出上述命令。您可以发出“wslconfig /L”来列出所有已注册的发行版,从那里获取发行版名称,然后使用“wslconfig /t 谢谢,这成功了!在我的情况下,我只需将Ubuntu 更改为Ubuntu-20.04,因为这就是我的发行版的调用方式。我通过运行 wslconfig /l 查看可用的发行版找到了它。 对我来说 wslconfig 也被冻结了【参考方案4】:

关闭windows-service Lxss-Manager

【讨论】:

【参考方案5】:

以管理员权限打开powershell,然后输入以下命令重启lxxsManger

Get-Service LxssManager | Restart-Service

【讨论】:

【参考方案6】:

进入windows设置->应用和功能->选择你安装的ubuntu->点击高级选项(可能需要稍等)->终止

【讨论】:

【参考方案7】:

假设您的 wsl 分发名称是 Ubuntu

您可以在Command Prompt(cmd) 中使用wsl 命令来查找分发名称并终止/关闭/重新启动特定分发。

重启意味着你关闭你的wsl发行版并重新启动它。

    打开cmd。 使用wsl -lwsl --list 列出/显示所有已安装的发行版。它会给你这样的输出。 (Default) 不是名称的一部分,只是一个标记。
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-20.04
Ubuntu-18.04
    使用wsl -twsl --terminate 之类的方式终止/关闭您想要的分发
wsl --terminate Ubuntu

下次打开它会自动启动。

【讨论】:

【参考方案8】:

在 windows 命令提示符下,发出 wslconfig /L 以查看已注册发行版的列表。

C:\Users\Manoj>wslconfig /L
Windows Subsystem for Linux Distributions:
Ubuntu-16.04 (Default)

现在发出 wslconfig /t

C:\Users\Manoj>wslconfig /t Ubuntu-16.04

然后您可以看到 Ubuntu 实例被终止。

manoj@Manoj-Laptop:~$ The Windows Subsystem for Linux instance has terminated.
Press any key to continue...

希望这会有所帮助。

【讨论】:

【参考方案9】:

试试这些步骤:

    在“开始”菜单中,搜索“打开或关闭 Windows 功能” 取消选中“适用于 Linux 的 Windows 子系统”,保存更改,然后重新启动计算机 选中“适用于 Linux 的 Windows 子系统”,保存更改,然后重新启动计算机

您的 WSL 现在应该可以工作了。

我不能因为这个答案而受到赞扬。 Please give credit to this person and to the person(s) who had originally shared this information.

更新 (8/23/21): 作为补充说明,我建议在关闭 VS Code 之前断开 WSL 与 VS Code 的连接。虽然这有点乏味,但根据我的轶事经验,我发现执行此额外步骤可以降低发生挂起问题的可能性。

【讨论】:

这花了我 3 次重启:D @Pavindu 你每次重启的目的是什么?提供的步骤应该只涉及两次重新启动。 这是该线程中唯一对我有用的解决方案。【参考方案10】:

虽然其他解决方案也能正常工作,但我喜欢这个适用于 Windows PowerShell 或 cmd 的简洁命令:

wsl -t Ubuntu

要查看安装了哪些发行版,您可以运行wsl -l

【讨论】:

【参考方案11】:

对我有用的是以管理员权限启动任务管理器,并通过右键单击任何现有列在“进程”列中启用命令行。然后找到前面有空行的Service Host。展开它并查看它是否包含 LxssManager。如果是这样,则通过右键单击并单击结束任务来终止它。然后启动 WSL,它就会工作。

【讨论】:

您还可以通过匹配“服务”选项卡中的“PID”(进程 ID)列来找到正确的进程。【参考方案12】:

我有时也有这个问题。我只需按 Ctrl+C 即可恢复“正常”

【讨论】:

这只是部分正确。 ctrl-c 停止当前正在运行的进程。但是,当进程忽略此请求时,即使这样有时也不起作用。【参考方案13】:

如果您尝试在服务中停止 LxssManager 并且它只是更改为“正在停止”状态并永远挂起(无法重新启动、停止、暂停全部显示为灰色):

通过以管理员身份进入任务管理器,显示“命令行”列,然后在列表中找到所有具有空命令行的“svchost.exe”(没有参数,没有 exe),只是盲目地杀死它们并希望最好。

然后刷新服务,LxssManager 然后显示为已停止。右键开始,又可以使用wsl.exe了。

【讨论】:

以上是关于WSL Ubuntu 挂起,如何重启?的主要内容,如果未能解决你的问题,请参考以下文章

WSL2:为啥我必须在重启 PC 后关闭 WSL 才能重启 WSL

如何在 WSL 中安装多个单独的 Ubuntu 实例? [关闭]

如何从 WSL (Ubuntu) Bash 运行 Windows 可执行文件

如何提高 WSL2 上 Ubuntu 20.04 中打开文件的限制?

WSL Ubuntu 宝塔 PHP 环境安装及配置

如何在 Ubuntu on Windows (WSL) 上为我的 VS Code 终端使用 Bash?