WSL 使用指南——03 避免的坑
WSL 使用指南——03 避免的坑
埠
WSL和Win10共享同一套埠,如果出現兩者監聽同一個埠的情況,Windows主系統的程序擁有更高的優先順序。也就是說,如果我們在WSL運行需要監聽埠的程序,必須確認該埠沒有被Windows主系統內的任何程序佔用。如果出現衝突,請參閱軟體相關文檔修改默認配置。
例如,在WSL中安裝SSH Server
時,埠衝突將會導致WSL不能按照預期通過SSH連接登陸,但只需修改默認WSL的SSH監聽埠,問題便迎刃而解。
眾所周知,SSH的默認連接埠是
22
,但是微軟在Win10中內置了SSH Server For Windows
並佔用了默認的22
埠,因此如果要在WSL中開啟SSH Server
,我們必須修改WSL中的默認SSH監聽埠。——WSL Guideline 06-配置SSH
後台運行Linux程序
當我們在WSL運行後台程序時(如在命令後加&
),後台程序會隨著WSL所有Session
的關閉而停止運行(每一個Session
對應任務管理器中一個Bash
進程,如下圖)。即,如果我們把WSL的Bash
窗口全部關閉的話,WSL的後台程序會被強制停止。這個機制雖然能夠避免WSL內程序計劃外運行,但是在執行後台任務時WSL命令行圖標常駐在任務欄
會破壞桌面的簡潔……
為了取消WSLBash
窗口圖標常駐在任務欄,我們可以開啟一個窗口隱藏
的Bash
進程常駐在後台,這樣後台程序就不會因為可見的WSLBash
窗口關閉而停止運行了————因為一直都有不可見的WSL命令行常駐在後台~~啟動隱藏窗口
方法如下:
- 打開
PowerShell
。 - 執行以下命令
powershell.exe -WindowStyle Hidden -c bash
之後你會在任務管理器發現這個Bash
後台進程,你的Linux程序可以後台運行了。為了省去每次開機輸入命令的麻煩,我們可以把此命令添加到任務計劃
。
如果你的WSL安裝了多個Linux發行版,上文命令最後的參數bash
只能打開WSL默認的Linux發行版Bash
窗口(通常為Ubuntu
)。因此,為了打開確定的Linux發行版Bash
窗口,我們需要將最後的參數bash
修改為我們安裝的Linux發行版名。假設我們同時安裝了Ubuntu
發行版和Kali Linux
發行版,那麼執行
powershell.exe -WindowStyle Hidden -c ubuntu
將打開Ubuntu
的Bash
進程,然後執行
powershell.exe -WindowStyle Hidden -c kali
將打開Kali Linux
的Bash
進程,但是兩者的Bash
進程顯示名稱相同,需要pid來區分對應的Linux發行版。
關於後台運行Linux程序,在通過腳本提高效率這篇文章中會有進一步的應用。
文件系統
WSL和Windows主系統之間的文件系統是可以互相訪問的。
如果在WSL中訪問Windows系統的文件,可在根目錄下/mnt/
看到對應Windows盤符字母的文件夾,通過這些文件夾即可訪問Windows的文件系統。
如果在Windows系統中訪問WSL的文件,可在Windows系統中找到已安裝Linux發行版的應用數據文件夾,所有Linux系統的數據都在那個文件夾(通過應用商店安裝的Linux發行版本質上也是一個應用)。Linux發行版的數據文件夾在C:Users{你的用戶名}AppDataLocalPackages{Linux發行版包名}LocalState
路徑內,在
ootfsrootfs
文件夾內我們會看到在WSL中的根目錄。
Linux發行版包名
可在上級文件夾Packages
內搜索你安裝的Linux發行版名稱,如圖:
- 註:在Windows下對WSL文件修改可能會造成許可權錯誤
下一步
- 安裝桌面環境
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名Wang Jiaxiang(包含鏈接:https://github.com/WangJiaxiang96/WSL-Guideline),不得用於商業目的,基於本文修改後的作品務必以相同的許可發布。如有任何疑問,請與我聯繫。
推薦閱讀:
※Linux 中 rc.local、init.d、rc.x、init 這幾個文件(夾)各有什麼作用?啟動執行的腳本應該均放在 rc.local 中嗎?
※深入理解 Linux 的 RCU 機制
※以最簡單方式學習Linux
※對於同樣的 C 語言代碼,為什麼 Mac OS X 上用 gcc 編譯運行的結果和其他系統不同?
※linux練習