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

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

标签: windows-10 windows-subsystem-for-linux


【解决方案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发行版并重新启动它。

        1. 打开cmd。
        2. 使用wsl -lwsl --list 列出/显示所有已安装的发行版。它会给你这样的输出。 (Default) 不是名称的一部分,只是一个标记。
        Windows Subsystem for Linux Distributions:
        Ubuntu (Default)
        Ubuntu-20.04
        Ubuntu-18.04
        
        1. 使用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】:

            试试这些步骤:

            1. 在“开始”菜单中,搜索“打开或关闭 Windows 功能”
            2. 取消选中“适用于 Linux 的 Windows 子系统”,保存更改,然后重新启动计算机
            3. 选中“适用于 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了。

              【讨论】: