概要
我们都知道WSL2现在性能已经能够达到生产力水平了,除了目前有些硬件支持的还不太好,比如USB没有原生支持。我有一个项目只有一台电脑并需要Windows和Linux联动(主要网络),有两种方案:
1、安装Linux+Wine
2、安装Windows+WSL2
综合考虑选择了后者,原因很简单Wine面对很多问题,而且是开源免费的东西,不像WSL2可是微软请来的技术专家做的,被誉为最好的Linux发行版
。
整体架构流程
平常在使用WSL2的时候需要指定登录某一个分发版,目前支持的有Ubuntu
、CentOS
、Debian
、OpenSUSE
等。
当我们需要执行shell的时候都要先打开分发板的面板才能进入shell环境,就像你在Linux上打开一个命令行一样,你所有的操作都是在当前环境里面。
如果我不需要看到WSL2的命令行界面呢?毕竟我希望实现开机自启动,这个时候我们就不得不依赖wsl.exe
这个程序了。
技术名词解释
* 后台执行
这里的后台执行
并不是任务切换到后台,而是指不需要值守不需要人为操作UI的情况下,通过一系列命令完成WSL2的SHELL命令。
技术细节
1.具体操作
wsl.exe是运行在Windows上的一个程序,确切来讲是Windows10
和Windows11
,Windows7不支持
。它是用来和WSL交互的程序或者WSL的管理程序。它有很多参数可供选择,不过我们今天只用到几种。
以Ubuntu-22.04
为例,需要指定哪个发行版去执行命令。至于怎么查看自己的发行版,我以前的文章里都提过,这里再说一下。
wsl.exe --list -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
Ubuntu-22.04 Running 2
Ubuntu-18.04 Stopped 2
CentOS8 Stopped 2
CentOS7 Stopped 2
上面的NAME就是发行版的名字,STATE是运行状态,VERSION是版本。
执行命令也很简单,下面是打印网卡信息的命令,标准输出会打印网卡信息,和你登录进去打印的一模一样。
不一样的是下面的命令不需要你手动起一个Ubuntu的命令行页面,一切看起来都像是在后台执行的一样。
wsl -d Ubuntu-22.04 -u anold --exec /bin/bash -c ‘ifconfig’
1.注意事项
1.环境变量
这里有一个需要注意的地方,你没有登录到发行版里面去,有些指令是不生效的比如:ll
。这个命令是定义在.bashrc
里面的alias
。因为.bashrc
没有被执行,所以配置在里面的ll
不生效,当然还有很多命令也不生效,这里就不一一列举了。
2.生命周期
如果你的WSL配置策略是按需使用的话,你就需要注意了,如果你长时间不再使用WSL它就会被自动回收掉。
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
Ubuntu-22.04 Stopped 2
Ubuntu-18.04 Stopped 2
CentOS8 Stopped 2
CentOS7 Stopped 2
确保你的服务一直处于活跃状态。
小结
蛮简单的,没有什么多余的操作。当然,wsl.exe还有很多功能等待被挖掘。