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 LxssManagerC:\Users\用户名>tasklist /svc /fi "services eq LxssManager"
映像名称 PID 服务
========================= ======== ============================================
svchost.exe 29984 LxssManagerC:\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\用户名>
-