wsl2 配置服务自启动

作者: dreamfly 分类: linux,操作系统 发布时间: 2022-12-12 21:03

WSL2 本身是由 Windows 负责运行的,因此使用 tree 或 ps 命令时会看到根进程不是 systemd,这将导致无法启动 Linux 系统服务的守护进程 (deamon)。 当我们执行 systemctl 命令的时候,会显示出我们的 init system (PID 1) 并非 systemd,而是微软提供的 /init。

因此一些服务无法自启动,因此我们需要一些办法来解决它。

解决的办法就是采用windows的自启动方法来,因为windows可以配置启动服务,那么我们可以添加一个windows的自启动服务来让它启动wsl2上的服务,这样当我们访问wsl2的时候,服务就已经启动了,这样会变得非常方便。

解决不了问题,我们不要去解决提出问题的人。而是要想尽一切办法来解决问题。

  1. 在wsl中创建一个启动配置文件,里面填写上要启动的服务。
sudo vi /etc/init.wsl
#! /bin/sh
service docker start
service mysql start
  1. 赋予文件可执行权限
chmod +x /ect/init.wsl
  1. 在windows系统上创建一个启动脚本startup.vbs。
Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d Ubuntu-22.04 -u root /etc/init.wsl",0
  1. 将启动脚本添加到启动目录。(通过win+r,输入 shell:startup进入 )。

之后,每次电脑重启的时候,wsl上的服务就会自动启动,对于想要自启动的服务,只需要添加到init.wsl文件里面即可。

最后

当然除了这种方式之外,其实对于服务来说,启动都是非常快的,并且,每次在wsl启动的时候都会加载.bashrc文件,因此我们也可以把服务启动放到.bashrc文件里面,这样打开wsl的时候,服务也会自动启动。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!