在wsl中配置的一些服務如nginx,mysql,ssh等,每次開機都會需要手動開啟,參考網上的開機服務配置都是通過往/etc/rc.local裡面新增啟動指令碼,但是wsl中怎麼配置都沒有效果。不過還好能夠找到其他方法進行代替,這兒有一種就是通過windows的開機啟動來開啟wsl中的啟動服務。以ssh的開機啟動舉例(參考位址):
(1)新增啟動項,讓 bash.exe 隨機啟動,並執行啟動 ssh 的命令。
按win + r
之後,輸入shell:startup
,會開啟 win10 的開機啟動任務資料夾。在該資料夾下新建乙個wsl.vbs
檔案:
set ws=wscript.createobject("wscript.shell")
ws.run "c:\windows\system32\bash.exe",0
ws.run "c:\windows\system32\bash.exe -c 'sudo /usr/sbin/service ssh start'",0
(2)上面指令碼試圖在子系統裡執行sudo /usr/sbin/service ssh start
。該命令預設還需要輸入密碼不能自動化,所以需要配置一下免除該命令的密碼。
執行sudo visudo
(實際編輯了檔案/etc/sudoers
,不過這個檔案預設不可寫,因此需通過visudo
來操作),新增如下配置:
your_username all = (root) nopasswd: /usr/sbin/service
由於wsl和windows公用一套埠,所以wsl中服務埠很可能和windows中的重複而導致啟動配置失敗,只能通過修改該wsl中的埠來避免衝突,如nginx監聽http的80埠,ssh的預設22埠等,都應該修改。
(1)不能使用poweroff等關機命令
(2)使用netstat命令獲取不到網路相關資訊
(3)gdb生成不了核心轉儲檔案(網上說是通過ulimit開啟生成後,預設生成轉儲檔案在程式目錄下,但是找不到)
(4)生成不了共享記憶體
使用MessagePack中遇到的坑
網上有很多messagepack的例子,都大同小異,我這裡就不介紹了,主要是說一下遇到的坑。大致情況 服務端和客戶端都能建立連線 客戶端在服務端建立連線的時候,傳送給服務端資料,但服務端就是接受不到訊息,我在編碼器msgpackencoder和msgpackdecoder解碼器中都列印了結果 編碼器...
C opencv使用中遇到的坑
在c 中讀取cv mat的資料時,如果資料不是8位單位元組的,不能使用mat.data i 的形式讀取,因為data是char 型指標.讀取需要指定資料型別,如mat.at i 如果使用指標,需要注意記憶體是否連續,如下所示 int nrows image.rows int ncols image....
WSL入坑與踩坑
這篇文章,將會娓娓道來我使用wsl的經歷,包括如何安裝以及早期玩家踩的一些坑。這是乙個很好的工具,與vscode簡直是絕配。wsl是什麼 適用於 linux 的 windows 子系統可讓開發人員按原樣執行 gnu linux 環境 包括大多數命令列工具 實用工具和應用程式 且不會產生傳統虛擬機器或...