windows子系统-wsl命令基础用法和无响应问题排查及解决方法

windows子系统-wsl命令基础用法和无响应问题排查及解决方法

一、资料

微软帮助手册

博文资料

二、最低系统要求

若要更新到 WSL 2,需要运行 Windows 10。

对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。

对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。

如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开"设置",导航到"更新和安全性",然后选择"检查更新"。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049

注:查看系统版本号命令:winver

三、常用命令

  • wsl --status //检查 WSL 状态
  • wsl //进入默认的发行版本,退出执行 exit
  • wsl -l -v //列出已安装的 Linux 发行版
  • wsl --terminate //终止指定的发行版或阻止其运行
    • 例:wsl --terminate Ubuntu-18.04
  • wsl --shutdown //重启wsl服务
  • wsl --set-default //设置默认 Linux 发行版
  • wsl --set-version //将WSL版本设置为1或2
  • wsl --set-default-version //设置默认 WSL 版本
  • wsl --distribution --user //运行特定的Linux发行版
  • wsl -u , wsl --user //以特定用户的身份运行
  • wsl config --default-user //更改发行版的默认用户
  • wsl --unregister //注销或卸载 Linux 发行版

四、检测wsl环境

复制代码
>wsl --status
默认版本:2

适用于 Linux 的 Windows 子系统最后更新于 2022/4/15
适用于 Linux 的 Windows 子系统内核可以使用"wsl --update"手动更新,但由于你的系统设置,无法进行自动更新。
 若要接收自动内核更新,请启用 Windows 更新设置:"在更新 Windows 时接收其他 Microsoft 产品的更新"。
 有关详细信息,请访问https://aka.ms/wsl2kernel。

内核版本: 5.10.16

五、问题汇总

问题一:执行命令wsl,提示"系统找不到指定的路径。"

出现错误:如果出现"系统找不到指定的文件"的提示,是因为之前安装的没有卸载的原因。

方法一:使用命令卸载和安装指定发现版本

  • 命令:wsl -l -v //查看安装的发行版本和默认版本信息
  • 命令:wsl --unregister Ubuntu-18.04 //卸载名为"Ubuntu-18.04"的发行版本
  • 使用powerShell执行安装命令:
    • Add-AppxPackage C:\wslApps\Ubuntu_1804.2019.522.0_x64.appx
    • Add-AppxPackage C:\wslApps\Ubuntu_2204.1.7.0_x64.appx

注:如果安装完后执行 wsl -l -v 提示"没有可用发行版本",可用方法二安装

方法二:解压 *.appx 文件安装

  • 将文件Ubuntu_1804.2019.522.0_x64.appx后缀改为.zip
  • 解压Ubuntu_1804.2019.522.0_x64.zip文件
  • 直接双击运行.\Ubuntu_1804.2019.522.0_x64\ubuntu1804.exe文件
  • 首次运行需要创建用户名、密码(都填test)
  • 再次执行wsl,可以顺利进入ubunt系统
  • 执行exist可退出子系统

问题二:如果出现参考的对象类型不支持尝试的操作,请重置下网络

  • 执行命令: net winsock reset
  • 重启电脑

问题三:运行一段时间后系统无法进入,执行wsl命令无响应

原因:子系统运行依赖的服务LxssManager停止工作,导致wsl命令无响应。

解决方法是重启LXSSManager服务,但是直接在服务管理器(service.msc)中操作该服务提示"访问拒绝"。可以通过用以下方法找到并结束LxssManager服务宿主进程svchost.exe的PID结束相关进程,之后刷新服务,点击"启动"重新启动该服务。

  • 方法1:

    • tasklist /svc /fi "imagename eq svchost.exe"
    • 搜索 LxssManager 并获取 PID
    • 以管理员身份运行任务管理器,在详细信息选项卡中,搜索包含 PID 的 svchost.exe
    • 右键单击它并选择"结束进程树"。
    • 在服务管理器中找到LxssManager,点击启动。(如果没有启动按钮,可以右键刷新下)
    • 执行:wsl --status 命令正常执行。(此时服务管理器中LXSSManager状态为运行中)
  • 方法2:

    • tasklist /svc /fi "services eq LxssManager" //查进程ID

    • wmic process where processid=29984 delete //结束指定PID进程

    • 在服务管理器中启动LxssManager服务

    • wsl --status //命令正常执行

      C:\Users\用户名>tasklist /svc /fi "services eq LxssManager"

      映像名称 PID 服务
      ========================= ======== ============================================
      svchost.exe 29984 LxssManager

      C:\Users\用户名>tasklist /svc /fi "services eq LxssManager"

      映像名称 PID 服务
      ========================= ======== ============================================
      svchost.exe 29984 LxssManager

      C:\Users\用户名>wmic process where processid=29984 delete
      删除实例 \DESKTOP-2VBQPJK\ROOT\CIMV2:Win32_Process.Handle="29984"
      实例删除成功。

      C:\Users\用户名>wsl --status
      默认分发:Ubuntu-18.04
      默认版本:2

      适用于 Linux 的 Windows 子系统最后更新于 2023/3/7
      适用于 Linux 的 Windows 子系统内核可以使用"wsl --update"手动更新,但由于你的系统设置,无法进行自动更新。
      若要接收自动内核更新,请启用 Windows 更新设置:"在更新 Windows 时接收其他 Microsoft 产品的更新"。
      有关详细信息,请访问https://aka.ms/wsl2kernel。

      内核版本: 5.10.16

      C:\Users\用户名>

相关推荐
CodeOfCC5 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows
momo卡5 小时前
MinGW-w64的安装详细步骤(c_c++的编译器gcc、g++的windows版,win10、win11真实可用)
c语言·c++·windows
南林yan17 小时前
DLL动态库实现文件遍历功能(Windows编程)
windows
Mike_66617 小时前
win10安装WSL2、Ubuntu24.04
windows·ubuntu·wsl2
liulun18 小时前
Skia如何绘制几何图形
c++·windows
old_power18 小时前
UCRT 和 MSVC 的区别(Windows 平台上 C/C++ 开发相关)
c语言·c++·windows
扛枪的书生18 小时前
AD 提权-CVE-2022-26923: CertiFried
windows·渗透·kali·提权·域渗透
面朝大海,春不暖,花不开20 小时前
Python 文件操作与输入输出:从基础到高级应用
windows·python·microsoft
染指111021 小时前
35.x64汇编写法(二)
汇编·windows·x64游戏·x64汇编·游戏攻防
新兴AI民工1 天前
windows上的visual studio2022的项目使用jenkins自动打包
windows·jenkins·visual studio