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"
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。