WSL使用中遇到坑

2021-09-25 12:53:22 字數 1114 閱讀 4814

在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 環境 包括大多數命令列工具 實用工具和應用程式 且不會產生傳統虛擬機器或...