Windows后台执行WSL2的SHELL命令

概要

我们都知道WSL2现在性能已经能够达到生产力水平了,除了目前有些硬件支持的还不太好,比如USB没有原生支持。我有一个项目只有一台电脑并需要Windows和Linux联动(主要网络),有两种方案:
1、安装Linux+Wine
2、安装Windows+WSL2
综合考虑选择了后者,原因很简单Wine面对很多问题,而且是开源免费的东西,不像WSL2可是微软请来的技术专家做的,被誉为最好的Linux发行版

整体架构流程

平常在使用WSL2的时候需要指定登录某一个分发版,目前支持的有UbuntuCentOSDebianOpenSUSE等。

当我们需要执行shell的时候都要先打开分发板的面板才能进入shell环境,就像你在Linux上打开一个命令行一样,你所有的操作都是在当前环境里面。

如果我不需要看到WSL2的命令行界面呢?毕竟我希望实现开机自启动,这个时候我们就不得不依赖wsl.exe这个程序了。

技术名词解释

* 后台执行

这里的后台执行并不是任务切换到后台,而是指不需要值守不需要人为操作UI的情况下,通过一系列命令完成WSL2的SHELL命令。

技术细节

1.具体操作

wsl.exe是运行在Windows上的一个程序,确切来讲是Windows10Windows11Windows7不支持。它是用来和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还有很多功能等待被挖掘。

猜你喜欢

转载自blog.csdn.net/jiexijihe945/article/details/132420543