在Windows子系統(WSL)中配置開機啓動服務

在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。
相關文章
相關標籤/搜索