Cervol

Cervol

保持 wsl2 在背景運行

原本的需求是用 mac 通过 ssh 远程连接 windows 主机上的 wsl2,主要参考了這個教程,調試的時候發現問題關鍵是讓 wsl2 保持後台運行,一旦 wsl2 instance 被停止,就無法連接上了。

Windows powershell 可以通過 wsl -l -v查看所有的 wsl 發行版的狀態。

最後的解決方案參考了這裡,即運行

wsl --exec dbus-launch true

經過實測是有效。順帶一提,退出某個 wsl instance 之後,可以設置一個停止 instance 的 idle time,默認值為 60s,不過滿足我們的需求不需要修改它了,用上面那個命令就行。
這條命令大概是在 wsl 中運行 dbus-launch truedbus-launch 是 D-Bus 的一個輔助工具,用於啟動一個 D-Bus 進程並返回環境變量。根據 ChatGPT 的說法,D-Bus 的某些守護進程會保持 WSL 運行。

為了避免每次手動輸入命令,可以考慮將其創建為一個 Windows 任務計劃程序。可以通過 Win+R 輸入 taskschd.msc 以圖形化的方式設置,也可以用更方便的一條命令設置。以管理員身份打開 powershell,並運行:

schtasks /create /tn "AutoStartWSL" /tr "wsl --exec dbus-launch true" /sc ONLOGON /RL HIGHEST /F

大致含義是創建一個任務計劃,在啟動的時候運行上面那條命令。
可以用

Get-ScheduledTask -TaskName "AutoStartWSL"

檢查任務是否成功創建。手動運行任務:

Start-ScheduledTask -TaskName "AutoStartWSL"
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。