WSL 命令大全(完全指南)

WSL 命令大全(完全指南)

版本为wsl2对于早期的wsl命令以下手册不适用。

WSL 命令大全(完全指南)

📋 目录

  1. 安装与管理
  2. 发行版操作
  3. 运行与控制
  4. 导入与导出
  5. 配置与设置
  6. 文件系统操作
  7. 网络与端口
  8. 用户管理
  9. 诊断与日志
  10. 实用技巧

1. 安装与管理

基础安装

powershell 复制代码
# 安装 WSL(默认 Ubuntu)
wsl --install

# 安装指定发行版
wsl --install -d <发行版名称>

# 列出可用发行版
wsl --list --online
wsl -l -o  # 简写

# 更新 WSL
wsl --update

版本管理

powershell 复制代码
# 查看 WSL 版本
wsl --version

# 升级到 WSL2
wsl --set-version <发行版> 2

# 设置默认版本
wsl --set-default-version 2

卸载与重置

powershell 复制代码
# 完全卸载 WSL(Windows 功能)
dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform

# 重启后生效
shutdown /r /t 0

2. 发行版操作

列出发行版

powershell 复制代码
# 列出所有已安装的发行版
wsl --list
wsl -l      # 简写

# 详细列表(包含状态和版本)
wsl --list --verbose
wsl -l -v   # 简写

# 列出所有发行版(包括未运行的)
wsl --list --all
wsl -l -a   # 简写

# 列出正在运行的发行版
wsl --list --running
wsl -l -r   # 简写

# 以安静模式输出(仅名称)
wsl --list --quiet

删除发行版

powershell 复制代码
# 注销并删除发行版(⚠️数据会丢失!)
wsl --unregister <发行版名称>

# 示例
wsl --unregister Ubuntu
wsl --unregister Debian
wsl --unregister "Ubuntu-22.04"  # 名称包含空格时用引号

# 批量删除
wsl --list | ForEach-Object { wsl --unregister $_ }

重命名发行版

powershell 复制代码
# WSL 没有直接的重命名命令,需要导出再导入
wsl --export Ubuntu ubuntu_backup.tar
wsl --unregister Ubuntu
wsl --import NewUbuntuName C:\WSL\NewUbuntu\ ubuntu_backup.tar

3. 运行与控制

启动与进入

powershell 复制代码
# 启动默认发行版
wsl
wsl ~      # 从当前目录启动

# 启动指定发行版
wsl -d <发行版名称>
wsl --distribution <发行版名称>

# 以特定用户启动
wsl -u <用户名>
wsl --user <用户名>

# 以 root 用户启动
wsl -u root
wsl --user root

# 启动但不进入 Shell
wsl --exec <命令>
wsl -e <命令>

停止与控制

powershell 复制代码
# 停止特定发行版
wsl --terminate <发行版名称>
wsl -t <发行版名称>  # 简写

# 停止所有发行版
wsl --shutdown

# 立即关闭 WSL
wsl --shutdown --force

# 暂停发行版
wsl --terminate <发行版>  # 实际是停止

运行 Linux 命令

powershell 复制代码
# 不进入 Shell 直接执行命令
wsl ls -la
wsl pwd
wsl whoami

# 执行复杂命令
wsl bash -c "cd ~ && ls -la"

# 从 PowerShell 传参
wsl echo "Hello from Windows"
wsl grep "pattern" /path/to/file

4. 导入与导出

备份与恢复

powershell 复制代码
# 导出发行版到文件
wsl --export <发行版> <保存路径.tar>
wsl --export Ubuntu D:\backups\ubuntu_backup.tar

# 从文件导入发行版
wsl --import <发行版名称> <安装路径> <文件路径.tar> [选项]
wsl --import Ubuntu C:\WSL\Ubuntu\ D:\backups\ubuntu_backup.tar

# 导入时指定版本
wsl --import Ubuntu C:\WSL\Ubuntu\ backup.tar --version 2

# 导入为新发行版(不覆盖)
wsl --import Ubuntu_Backup C:\WSL\Backup\ backup.tar

压缩选项

powershell 复制代码
# 导出时使用 vhdx 格式(WSL2 专用)
# 需要手动复制 VHDX 文件
# 位置:%LOCALAPPDATA%\Packages\<Package>\LocalState\ext4.vhdx

# 检查导出文件信息
wsl --import --help

5. 配置与设置

默认发行版设置

powershell 复制代码
# 设置默认发行版
wsl --set-default <发行版名称>
wsl -s <发行版名称>  # 简写

# 查看当前默认发行版
wsl --get-default

# 更改默认用户(需要编辑配置文件)
# 在 WSL 中运行:
sudo nano /etc/wsl.conf
# 添加:
[user]
default=yourusername

全局配置

powershell 复制代码
# 查看 WSL 配置
wsl --status

# 生成诊断日志
wsl --collect-diagnostics

# 重置 WSL 配置
# 1. 停止所有发行版
wsl --shutdown
# 2. 重启 LxssManager 服务
net stop LxssManager
net start LxssManager

wsl.conf 配置文件

bash 复制代码
# /etc/wsl.conf 示例
[automount]
enabled = true
root = /mnt/
options = "metadata,uid=1000,gid=1000,umask=022"
mountFsTab = true

[network]
generateHosts = true
generateResolvConf = true

[interop]
enabled = true
appendWindowsPath = true

[user]
default = yourusername

[boot]
systemd = true

6. 文件系统操作

跨系统文件访问

powershell 复制代码
# 从 Windows 访问 Linux 文件
\\wsl$\Ubuntu\home\username
\\wsl$\  # 列出所有发行版

# 从 Linux 访问 Windows 文件
/mnt/c/Users/Username
/mnt/d/  # D盘

# 在 PowerShell 中直接访问
cd \\wsl$\Ubuntu\home
ls \\wsl$\Ubuntu\etc

挂载管理

powershell 复制代码
# 在 WSL 中挂载新驱动器
sudo mount -t drvfs D: /mnt/d

# 查看磁盘空间
wsl df -h
wsl --system df -h  # 系统级信息

# 检查文件系统
wsl fsck

7. 网络与端口

网络配置

powershell 复制代码
# 查看 IP 地址
wsl hostname -I
wsl ip addr show

# WSL2 固定 IP(需要 PowerShell 脚本)
# 创建 %USERPROFILE%\.wslconfig
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

# 端口转发(Windows 中执行)
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.101.100

服务管理

powershell 复制代码
# 在 WSL 中启动服务
wsl sudo service ssh start
wsl sudo systemctl start nginx

# 检查端口监听
wsl netstat -tulpn
wsl ss -tulpn

8. 用户管理

用户操作

powershell 复制代码
# 创建新用户(在 WSL 中)
wsl sudo adduser newuser

# 更改密码
wsl sudo passwd username

# 切换用户
wsl su - username
wsl sudo -i  # 切换到 root

默认用户设置

powershell 复制代码
# 方法1:修改 wsl.conf
# 方法2:使用 PowerShell 命令
<发行版> config --default-user <用户名>
# 示例:
ubuntu config --default-user myuser
ubuntu2004 config --default-user myuser

9. 诊断与日志

诊断命令

powershell 复制代码
# 查看 WSL 状态
wsl --status

# 收集诊断信息
wsl --collect-diagnostics

# 查看日志
wsl --log tail  # 实时日志
wsl --log dump  # 导出日志

# 启用详细日志
# 创建或编辑 %USERPROFILE%\.wslconfig
[wsl2]
kernelCommandLine = "systemd.unified_cgroup_hierarchy=0 debug"

常见问题排查

powershell 复制代码
# 检查 WSL 是否运行正常
wsl --list --verbose

# 重启 WSL 服务
net stop LxssManager && net start LxssManager

# 重置网络
wsl sudo dhclient -r && wsl sudo dhclient

# 检查内存使用
wsl free -h
wsl top

10. 实用技巧

快捷命令

powershell 复制代码
# 常用别名设置(添加到 PowerShell Profile)
function wsl-list { wsl -l -v }
function wsl-stop { wsl --shutdown }
function wsl-ubuntu { wsl -d Ubuntu }
function wsl-debian { wsl -d Debian }

# 从当前目录启动 WSL
function wsl-here {
    $currentPath = (Get-Location).Path
    wsl --cd $currentPath
}

集成开发环境

powershell 复制代码
# VS Code 集成
code --remote wsl+Ubuntu

# Docker 集成
wsl docker --version

# 在 WSL 中运行 VS Code
wsl code .

性能优化

powershell 复制代码
# 配置内存限制
# 编辑 %USERPROFILE%\.wslconfig
[wsl2]
memory=4GB    # 限制内存使用
processors=4  # CPU 核心数
localhostForwarding=true

# 磁盘清理
wsl sudo apt clean
wsl sudo apt autoremove

跨平台脚本

powershell 复制代码
# 混合 PowerShell 和 Bash 脚本
$files = wsl ls /home/user/documents
foreach ($file in $files) {
    wsl cat "/home/user/documents/$file" | Out-File "C:\temp\$file.txt"
}

# 从 Windows 调用 Linux 工具
wsl grep -r "pattern" /path | Select-String "pattern"

🔧 快速参考表

类别 常用命令 说明
列表 wsl -l -v 查看所有发行版
启动 wsl 启动默认发行版
停止 wsl --shutdown 关闭所有 WSL
删除 wsl --unregister 删除发行版
导出 wsl --export 备份发行版
导入 wsl --import 恢复发行版
运行 wsl <命令> 执行 Linux 命令
用户 wsl -u root 以 root 运行
目录 wsl ~ 从用户目录启动
状态 wsl --status 查看 WSL 状态

📚 更多资源

powershell 复制代码
# 获取完整帮助
wsl --help
wsl --help full

# 官方文档
start https://docs.microsoft.com/windows/wsl/

# 社区资源
start https://github.com/microsoft/WSL
相关推荐
凉、介4 天前
ACRN Hypervisor 简介
笔记·学习·虚拟化
z.q.xiao11 天前
【镜像模式】WSL如何访问windows内网服务
linux·网络·windows·gitlab·wsl·dns
njsgcs11 天前
ModelScope下载模型+ vLLM调用+内存释放
windows·wsl·vllm
UpYoung!14 天前
【VMware 17】虚拟化软件——VMware 17 Pro 详细图文完全教程:桌面虚拟化的行业标杆
开源软件·vmware·虚拟化·虚拟化工具·运维必备·虚拟化平台·vmvare 17
微风中的麦穗21 天前
【VMware 17 Pro】虚拟化工具——VMware 17 Pro 详细图文完全指南:专业虚拟化平台的终极解决方案
个人开发·vmware·虚拟化·虚拟机·运维必备·虚拟化平台·vmware17
liulilittle21 天前
Windows 11 Hyper-V 虚拟机双网卡网络中断无法恢复问题
网络·windows·虚拟化·hyper-v·vps·vm·vds
凉、介24 天前
深入 QEMU Guest Agent:虚拟机内外通信的隐形纽带
c语言·笔记·学习·嵌入式·虚拟化
Android小码家1 个月前
WSL+llama+CPU本地模型部署
llama·wsl·模型
liulilittle1 个月前
Windows WSL部署Ubuntu子系统到其它磁盘上
linux·运维·服务器·网络·windows·ubuntu·wsl