(关联域总帖:#919 终端/执行器进程生命周期) 这是一个**用户自维护长驻进程**的场景,和 #919 里 hiddenExec/root 工具调用产生的进程不完全同类,单独开一条,看是否该归并或另有官方姿势。 ## 环境 - Operit 1.12.2 / Android 12 - 终端:proot (Ubuntu 24.04) ## 用法 在 proot 里跑一个**用户自己写的长驻服务**:一个 Node 进程,用 `setsid ... &` 分离,订阅外部 SSE 事件并注入本地对话;旁边还有一个 shell 写的 watchdog(同样 `setsid` 常驻,负责探活并拉起服务)。这些都**不是**通过工具调用派生的进程,而是用户在终端会话里自己起的。 ## 现象 跑一段时间后(几十分钟到数小时不等),**proot 层里这些自启常驻进程会被整体清掉**——长驻服务、watchdog、批处理 flusher 一起消失。因为被清的是「同一层」,watchdog 救不了自己(它和它要守护的进程在同一层里)。桥的日志里没有 ERROR、没有 OOM 记录,进程就是静默消失;同时 App 本身还活着、可正常使用。社区里也有其他用户反馈「手机端 proot 部署不保活」。 ## 想请教 1. 对**非工具调用产生**、用户自己以 `setsid` 起在终端会话里的后台进程,Operit 会做定期回收吗?触发条件是什么(工具响应超时 / 会话空闲 / 内存压力 / App 生命周期回调)? 2. 有没有**保活 / 白名单**机制(前台服务、任务锁定、隐藏设置项等),能让这类长驻进程不被清? 3. **官方推荐**的长驻后台服务跑法是什么?(是否本就不建议跑在 proot 里?) 4. 若暂时没有机制,能否考虑提供一个「**环境重建 / App 启动时可执行用户自定命令**」的钩子(类似 autostart),让用户自维护的服务能被自动拉起? ## 当前 workaround 用 workflow(schedule 触发器)定时跑一个 ensure 脚本去检查并拉起,但受 WorkManager 15 分钟最小周期限制,空窗偏长,仍会漏事件。想确认有没有更正统的办法。谢谢。 --- (如与本项目既定路线不符或应并入 #919,请直接归并,不必另行回复。)
Activity