1. 首页
  2. 工具软件

在WSL环境下ssh, mysql, reids-server, supervisor等服务自动开启

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。相比在Windows下用虚拟机来运行Linux,WSL要方便得多,但是每次退出wsl后,所开启的服务,如:ssh, mysql, supervisor等服务就是用不了,每次得手动的重启开启,非常的不方便,本文就以我工作和实战中遇到的问题来记录。

网上也很多文章写到怎么在window启动的时候就自动的开启服务,而不用手动的进入到wsl开启,但是还是不能解决开机自启的问题,经过一番探索和折腾后,终于解决问题,在此分享给大家我遇到的问题,废话不多说。

1. 首先新建一个shell脚本来保存你要开启服务的命令:
#!/bin/sh
service ssh $1
service mysql $1
redis-server /etc/redis/redis.conf
service supervisor $1
然后保存到/etc/init.wsl中, 其中每一行都是你要开启对应服务的命令,$1代表执行该文件接收的第一个参数,$0代表所执行的文件名,如:

sudo /etc/init.wsl start ,其中$0接收为/etc/init.wsl,$1接收为start,相关介绍:https://blog.csdn.net/qq_30137611/article/details/77092524

2. 添加执行权限
sudo chmod +x /etc/init.wsl,这样该文件就可以被执行了,可以调用此文件来开启里面的服务,sudo /etc/init.wsl start

3. 编辑sudoers,避免输入密码
sudo vim /etc/sudoers,在最后一行添加

%sudo ALL=NOPASSWD: /etc/init.wsl

这样启动的时候就不用输入密码了,开机自启的时候也就不用输入密码,避免自启失败。

4. 返回windows界面创建一个startservice.vbs脚本
按照网上的教程,内容为:

Set ws = WScript.CreateObject(“WScript.Shell”)
ws.run “bash -c ‘sudo /etc/init.wsl start'”, vbhide
win10的开始-运行里面,即win+R输入shell:startup打开启动文件夹,window启动的时候都会去执行里面的文件,把startservice.vbs脚本放进去,重启系统(其实也不用重启,你就点击执行该文件就行),然后报错没有找到该文件,修改为:

Set ws = WScript.CreateObject(“WScript.Shell”)
ws.run “C:\Windows\System32\bash.exe -c ‘sudo /etc/init.wsl start'”,0
将bash.exe改为:C:\Windows\System32\bash.exe ,即bash.exe文件所在路径,然后再次重启电脑,进入wsl环境,发现还是没有启动里面的相应服务,进过探索发现,只要退出wsl环境,所开的服务都会关闭,所以以上的自启脚本只是执行开启服务的脚本,而没有进入wsl环境,那就先进入wsl环境然后在执行启动服务的脚本,则将以上脚本改为:

Set ws = WScript.CreateObject(“WScript.Shell”)
ws.run “C:\Windows\System32\bash.exe”,0
ws.run “C:\Windows\System32\bash.exe -c ‘sudo /etc/init.wsl start'”,0
保存,然后重启系统,/etc/init.wsl里面开启服务的脚本就生效了,ok.
————————————————
版权声明:本文为CSDN博主「辉辉咯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41020281/article/details/92250445

WSL

发表评论

登录后才能评论