WSL设置开机启动程序(含Root权限启动配置)

WSL设置开机启动程序(含ROOT权限启动配置)

启动任务计划程序(Win+R运行 taskschd.msc 或通过控制面板-系统与安全-管理工具-计划任务)

在右侧操作栏里点【创建基本任务】弹出如下窗口

WSL设置开机启动程序(含Root权限启动配置)
填写基本任务名称,触发器选择【计算机启动时】

WSL设置开机启动程序(含Root权限启动配置)

下一步选择【启动程序】,然后弹出如下页面

WSL设置开机启动程序(含Root权限启动配置)

在程序框中填写cmd

在添加参数框中填写想要执行的wsl命令,例如开机启动pm2,再通过pm2维护其他任务,可以这样写:/c wsl pm2 update

如果需要执行的命令需要root权限(例如开机启动ssh服务或crontab等),有两种方法:

第一种是我自己用的,程序保持为cmd,启动参数改为/c "wsl -u root bash -c 'service ssh restart' " 这种写法在启动wsl时选择登录用户为root,这样就可以执行root命令了。但这并不需要cmd是带有管理员权限的,也就是说配置计划任务的时候不用配置最高管理员权限。

第二种是网上教程普遍存在的,将某个脚本或某个程序写入到sudo visudo启动的编辑器的文件中,例如%sudo ALL=NOPASSWD: /etc/init.d/cron start 这样虽然也能达到效果,但是会导致在wsl内部这个程序一直可以不需要sudo验证就可以获取到root权限,相对而言还是比较危险的,而且不优雅。