WSL子系统默认情况下需要保持终端窗口开启,才能一直保持运行状态。如果关闭终端窗口,WSL子系统会在几秒后自动退出,这对于将WSL子系统作为开发环境或者利用Docker进行常驻服务开发运行是不合适的。因此需要将WSL子系统设置为随着系统自启动并能常驻后台运行。
在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6f54d74704f94af4b8285276c52996d3.png

1 获取WSL子系统名称

要让WSL子系统后台常驻运行,首先得得到需要后台常驻运行的WSL子系统名称。在Windows终端的cmd或者powershell窗口中运行如下命令获取WSL子系统名称。

wsl -l -v             # 参数简写
wsl --list --verbose  # 参数全称
C:\Users\ZHOU>wsl -l -v
  NAME        STATE           VERSION
* Program     Stopped         2
  Database    Stopped         2

在这里插入图片描述

2 新建后台常驻运行脚本(vbs)

新建一个vbs脚本,文件自定义,文件内容如下:

set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Database", 0 
ws.run "wsl -d Program", 0 

在Windows中手动双击启动该脚本,就可以将WSL子系统后台常驻运行。
`

objShell.Run (strCommand, [intWindowStyle], [bWaitOnReturn])`
- objShell: 一个 WScript.Shell 对象。    
- strCommand: 要执行的命令。    
- intWindowStyle (可选): 指定程序窗口的外观。    
- bWaitOnReturn (可选): 布尔值,表示是否等待命令执行完成。  

参数说明
- intWindowStyle: 
0: 隐藏窗口并激活另一个窗口。 
1: 激活并显示窗口(默认)。 
2: 激活窗口并最小化。 
3: 激活窗口并最大化。 
4: 按最近的窗口大小和位置显示窗口。 
5: 激活窗口并按当前大小和位置显示。 
6: 最小化指定窗口,并激活下一个顶部窗口。 
7: 将窗口显示为最小化窗口。 
8: 将窗口显示为当前状态。
9: 激活并显示窗口。 
10: 根据启动应用程序的程序状态设置显示状态。   

- bWaitOnReturn: True: 等待命令执行完成后再继续执行脚本,并返回命令的错误代码。 False (默认): 不等待命令执行完成,立即返回并继续执行脚本。 

3 开机运行后台常驻脚本

上述vbs命令还需要手动启动,不是很方便,可以将其添加到自启动目录里面。
在Windows中利用快捷键 Win+R,打开运行窗口,输入以下命令直接打开自启动目录

shell:startup

![[Pasted image 20250922173641.png]]
实际地址为

C:\Users\ZHOU\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

![[Pasted image 20250922172437.png]]
将步骤2中创建的vbs文件放到该目录下
在这里插入图片描述

4 关闭后台常驻运行的WSL子系统

4.1 直接关闭所有的WSL子系统

wsl --shutdown

该命令会直接关闭所有正在运行的WSL子系统

4.2 关闭指定的WSL子系统

wsl -t Database             # 参数简写
wsl --terminate Database    # 参数全称
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐