如何让 WSL 2 在后台持续运行:彻底解决关闭终端后 WSL 退出问题(Hermes Agent 持续运行)

一、问题背景

在使用 WSL 2 开发和运行 Python 项目时,很多开发者都会遇到以下问题:

关闭 PowerShell 或 Windows Terminal 后,WSL 自动退出,正在运行的 Hermes Agent也随之停止。

这是 WSL 2 的默认行为:当虚拟机内没有活跃 Linux 进程时,WSL 会自动关闭以节省资源

本文将详细介绍如何让 WSL 保持后台运行,并让你的 Hermes Agent 作为系统服务稳定持久运行。


二、WSL 2 终止机制原理解析

WSL 2 是一个轻量级 Hyper-V 虚拟机。当满足以下任意条件时,它会自动终止:

  • 没有正在运行的 Linux 进程
  • 没有活跃的终端会话
  • 超过空闲超时

使用 sleep infinity 等粗暴方式虽然可行,但资源占用较高。最佳实践是启动一个轻量级守护进程(如 D-Bus)来保活。


三、最佳保活方案:使用 dbus-launch

核心启动命令

cmd 复制代码
@start /b wsl --exec dbus-launch true
原理说明:
  • start /b:后台静默运行,不弹出窗口
  • --exec:直接执行命令,不启动交互式 Shell
  • dbus-launch true:启动 D-Bus Session Bus 守护进程(true 命令立即退出),让 WSL 认为有进程在运行,从而保持虚拟机活跃

该方案资源占用极低,是目前最优雅的 WSL 后台保活方式。


四、完整实施步骤

1. 创建开机自启动文件

Win + R,输入以下路径打开启动文件夹:

css 复制代码
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup

新建文件 wslstart.cmd,内容如下:

bash 复制代码
@echo off
:: 保持 WSL 后台运行,供 Hermes Agent 使用
start /b wsl -d Ubuntu --exec dbus-launch true

(将 Ubuntu 替换为你实际的发行版名称)

重启电脑后,WSL 将自动在后台运行。


五、如何连接到后台运行的 WSL 实例

bash 复制代码
wsl                  # 最简单方式
wsl -d Ubuntu        # 指定发行版
wsl -d Ubuntu -u wanjing   # 指定用户名

推荐使用 Windows Terminal 作为日常终端。


六、使用 systemd 管理服务, 让 Hermes Agent 自动启动并持久运行

Hermes Agent 推荐使用 systemd 管理服务(WSL2 已原生支持)。

步骤如下:
  1. 启用 systemd
bash 复制代码
sudo vim /etc/wsl.conf

添加以下内容:

ini 复制代码
[boot]
systemd=true
  1. 创建 systemd 服务文件
    安装 Hermes Agent后, 使用下面命令会自动创建 systemd服务
css 复制代码
sudo hermes gateway install --system
  1. 查看服务
bash 复制代码
# 查看服务状态
sudo systemctl status hermes-gateway.service

七、常用管理命令

perl 复制代码
wsl -l -v                  # 查看 WSL 状态
wsl --shutdown             # 完全关闭 WSL(释放资源)
wsl -d Ubuntu              # 连接到后台实例

八、总结

通过以下组合方案,我们完美解决了 WSL 退出问题:

  • wslstart.cmd + dbus-launch → 保持 WSL 后台常驻
  • systemd 服务 → 让 Hermes Agent 自动、重启、持久运行

现在即使你关闭所有终端窗口,甚至注销 Windows,Hermes Agent 依然能在后台稳定运行。

相关推荐
武子康2 小时前
小智的音频队列满了:丢旧帧、拒新包与播放延迟
人工智能·llm·agent
阿图灵2 小时前
LangGraph 实战 07:Event Streaming 事件流式——类型化投影与频道机制
agent
点亮~黑夜2 小时前
远程连接浏览无桌面服务器上的图片
windows·软件构建
Albart5752 小时前
Docker Desktop 增量更新失败终极排查:Failed to apply delta update 反复回滚怎么办?
windows·docker·容器·docker部署大模型
半糖程序员2 小时前
从零构建 Agent(3):接入阿里云百炼
agent
武子康2 小时前
SGLang 回答慢,时间究竟花在了哪里?
人工智能·llm·agent
Patrick在香港2 小时前
Claude + Python 数据管道:一次字段改名,786 行历史数据被静默重写
开发语言·windows·python·claude·数据工程·数据校验·数据管道
超级无敌霹雳大狗熊2 小时前
以最小demo讲解Eino中的graph编排
go·agent
mldong3 小时前
AI Agent 不能自己签字:用 Python 工作流引擎给 AI 加一道人类审批闸门
后端·python·agent
ShallWeL3 小时前
【Agent工程】(15)—— 评测集与回归门禁
人工智能·agent·工作流