在WSL中跑了一些测试服务 好比 mysql nginx等,但关机后每次都要手动开启甚是吃力,本想着用rc.local来编辑开机启动 ,无奈不支持啊!先看看非WSL环境中是怎么实现的。mysql
在 Ubuntu 18一下,设置开机自动启动通常是编辑 /etc/rc.locallinux
在 Ubuntu 18以上则须要连接 rc-local.service 文件 而后建立 rc.local 文件并修改权限,大概是这样的:nginx
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
touch /etc/rc.local
chmod 755 /etc/rc.local
而后编辑rc.local 大概格式是这样的:sql
#!/bin/bash
service start ....
exit 0
然而,WSL中并不支持经过rc.local 来实现开机启动。但在这有个偏方,能够经过windows 的启动项来启动 rc.local中的脚本。shell
win+r shell:startup <- 进入启动目录vim
- 建立一个VBScript脚本wls_rclocal.vbs
- 写入内容 , 经过bash命令参数去执行rc.local
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /etc/rc.local'",0
- 进入WSL终端 建立 sudoers 文件
vim /etc/sudoers.d/rc-local
- 编辑配置以下内容,yourusername 为 linux帐户名称 , 后面的路径则是须要启动的程序路径。这里的做用是无需输入用户名和密码即以sudo/超级帐户执行配置的程序和脚本。
yourusername * = (root) NOPASSWD: /etc/rc.local
yourusername * = (root) NOPASSWD: /etc/init.d/mysql
yourusername * = (root) NOPASSWD: /etc/xxxxxx
- 重启电脑,登陆帐户后就会执行wls_rclocal.vbs,经过VBS执行rc.local中的启动脚本。
- 也能够经过windows计划任务实现启动VBS。