最近电脑重装了系统, 所以 win10 子系统(wsl)也得重新安装, 配置环境. 这次重装后想结合 VSCode 的远程开发功能和 win10 的子系统, 实现一次配置环境, 不用每次重装系统后都要花很多时间配置系统环境.

因为子系统不支持 systemd, 自然就无法通过 systemctl enable xxx 来实现服务或者程序的开机启动了. 网上搜了一圈, 基本上都是通过新建 vbs 脚本来实现开机启动, 我这里用的是系统的计划任务来实现.

设置步骤

1. Ubuntu 下新建开机脚本

1
vi ~/.init.sh
1
2
3
4
5
#!/bin/sh
/etc/init.d/mongodb start
/etc/init.d/redis-server start
/etc/init.d/ssh start
# 脚本内容根据你的实际服务设置

2. 设置 sudo 免密执行开机脚本

1
sudo vi /etc/sudoers # 此处需要输入当前用户密码

在文件尾部输入以下内容

1
your_user_name ALL=(ALL:ALL) NOPASSWD:/home/your_user_name/.init.sh

一定要在文件末尾, 否则会被前面组权限部分覆盖

完全退出子系统, 然后 sudo 执行脚本, 测试是否已经免密

1
sudo /home/your_user_name/.init.sh

此处一定要完全退出并打开子系统, 否则编辑 /etc/sudoers 时输入的密码会有缓存, 测试结果有误

3. 新建计划任务

回到 win10

  1. WIN + S 打开搜索面板, 输入 task 搜索并打开计划任务.

  2. 创建任务

    1. 触发器选择启动时

    2. 操作选择启动程序

      程序或脚本: C:\Windows\System32\bash.exe
      添加参数: -c 'sudo /home/your_user_name/.init.sh'

    3. 其他条件之类的, 根据你的情况设置

结语

重点在于计划任务的 触发条件 以及启动程序的 参数. 在子系统内的设置注意设置 免密执行脚本 即可.


本文作者贪狼
本文地址https://www.icksky.com/notes/win10-sub-system-auto-start-scripts/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!