WSL 里跑 Node.js 服务:nohup 对它无效,我翻了 5 次车才摸清

标签: WSL · Node.js · Linux · 后端 · 踩坑记录


01 问题

在 WSL Ubuntu 里装了 Hermes Agent,配了 Dashboard(9119)和 hermes-web-ui(8648)。两个服务都起来了,浏览器能打开,登录也正常。

但发送消息没反应。

没有报错,没有超时,就是安静地不动。


02 排查

查了一下端口情况:

端口 服务 状态
9119 Hermes Dashboard 监听中
8642 Hermes Gateway(后端 API) 没起来
8648 hermes-web-ui(前端) 监听中

问题找到了:8642 端口没开,Web UI 根本连不上后端 API。


03 第一次尝试:nohup + disown

先启动 Hermes Gateway:

bash 复制代码
nohup hermes gateway run > hermes_gateway.log 2>&1 &
disown

8642 端口起来了。关闭终端再检查------端口没了。

原因:用 subprocess.run() 调 WSL 命令,每次都是一个新的 bash 进程。进程结束后,它衍生的所有子进程也会一起被清理。


04 第二次尝试:hermes-web-ui 也用 nohup

bash 复制代码
nohup /usr/bin/node /usr/lib/node_modules/hermes-web-ui/dist/server/index.js > webui.log 2>&1 &
disown

进程秒退。日志到 gateway manager initialized 就停了,没有报错。

Python 进程用 nohup 还能撑一会儿,Node.js 进程直接退出了。disown 对 Node.js 不起作用。


05 第三次尝试:setsid

bash 复制代码
setsid /usr/bin/node /usr/lib/node_modules/hermes-web-ui/dist/server/index.js > webui.log 2>&1 < /dev/null &

还是秒退。nohup + setsid 组合也试了,一样。


06 第四次尝试:timeout

用 timeout 跑前台看看:

bash 复制代码
timeout 5 /usr/bin/node /usr/lib/node_modules/hermes-web-ui/dist/server/index.js

日志完整输出:

csharp 复制代码
[bootstrap] listening on 0.0.0.0:8648
Server: http://localhost:8648

服务能起来,但 timeout 结束就停了,无法常驻。


07 解法:screen -dmS

换用 screen:

bash 复制代码
screen -dmS hermes-webui /usr/bin/node /usr/lib/node_modules/hermes-web-ui/dist/server/index.js

8648 端口稳稳亮起,进程在 screen 会话里挂着,关闭终端也不掉。

Gateway 同样用 screen:

bash 复制代码
screen -dmS hermes-gateway bash -c "source ~/.hermes/hermes-agent/.venv/bin/activate && exec hermes gateway run > hermes_gateway.log 2>&1"

08 为什么 nohup 对 Node.js 无效

nohup 负责忽略 SIGHUP 信号,这部分没问题。真正的问题在于父进程生命周期。

  • Python 进程被 nohup 后,父 bash 退出时会被 init 接管,继续运行
  • Node.js 对 SIGHUP 的处理有时会触发额外清理逻辑,或者 V8 垃圾回收在没有 TTY 时行为异常,导致进程主动退出

screen 创建了一个真正的守护终端,Node.js 运行在一个完整会话里,不依赖任何父进程。


结论

WSL/Linux 里让 Node.js 服务持久运行的正确方式:

bash 复制代码
# ✅ screen
screen -dmS <session-name> node your-app.js

# ❌ nohup / disown / setsid 对 Node.js 均不可靠

把持久化交给 screen。

相关推荐
张彦峰ZYF6 小时前
越过边界之前:Reward Seeker 实验如何改写智能体安全的时间逻辑
人工智能·ai agent·anthropic·智能体安全·reward seeker·“控制评价过程”泛化跨领域策略·envbom
拓恒技术6 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
罗西的思考8 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
字节跳动视频云技术团队9 小时前
720P 直升 8K,解密 2026 抖音美好奇妙夜巨幕超分黑科技
人工智能·音视频开发
打工仔折腾 AI9 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
逐米时代9 小时前
从试点验证到协同深化:制造业AI转型三年路线图设计方法
人工智能
GlobalInfo10 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
stormzhangV10 小时前
AI 越强,失业越严重
人工智能·aigc
夏文强11 小时前
Rerank 与混合检索:怎么让 RAG 从「能用」变成「好用」
人工智能·大模型·向量数据库·rag·检索增强生成
救救孩子把11 小时前
AI面试八股文-23_23-Agent可观测性与生产监控面试题
人工智能·面试·职场和发展·agent·langsmith·langfuase