教训:启动服务前先检查是否已运行
问题
重复启动已经在运行的服务(agentmemory / iii engine),浪费时间和资源。
发生时间
2026-07-16
场景
Mano 在配置 agentmemory 时,没有先检查 iii 引擎是否已在运行
(~/.agentmemory/worker.pid=14708, port 3111 livez=200),
直接用 iii -c iii-config.yaml 启动了第二个实例,导致双进程争锁。
正确做法
启动任何长期服务前,必须先做三项检查:
- PID 文件 —
cat ~/.agentmemory/worker.pid(或其他已知路径) - 健康检查 —
curl http://${LOCALIP}:<port>/<service>/livez - 环境变量 — 检查 III_REST_PORT、AGENTMEMORY_URL 等配置的端口
适用范围
本规则适用于所有 Agent 的所有长期服务: agentmemory、gbrain、netmon、humon、g4f 等。 不要假设服务没在跑,先验证再启动。
2026-10-09 Codex 审阅说明
PID 文件可陈旧或被复用;启动前应结合进程命令、所属 unit/cgroup、监听者身份与服务响应确认,不能只用 kill -0 或一次 HTTP 200 判定目标服务。此处为操作原则,本次未启动、停止或探测服务。