用途:用单个可执行的 ~/.tmux.services 清单管理多项目常驻服务,每个项目只维护自己的前台 launcher 脚本,服务生命周期交给 tmux。依赖 Bash 3.2+ 与 tmux(macOS 可 brew install tmux,Debian/Ubuntu 可 apt install tmux)。安装时先记 SKILL_ROOT,再执行 bash "$SKILL_ROOT/scripts/install.sh",首次写入 ~/.tmux.services 并设为 0700,目标已存在则拒绝覆盖;测试可用 --target 指定路径,升级用 --upgrade,仅保留用户服务标记之间的内容并先建 .bak 备份。
主要能力:在 ~/.tmux.services 的 configure_services() 中用 start_service "<project>" "<service>" "<launcher>" 注册服务;project/service 为 1–40 位小写字母、数字、单连字符,复合键唯一。服务名全局唯一时直接使用短名 <name>,session 为 serv-<name>;重名时使用 <project>/<name>,session 为 serv-<project>-<name>。launcher 必须位于项目 tools/ 下且可执行,从自身路径定位项目,最终 exec 前台主进程,不使用 nohup、尾随 & 或自建 tmux。
使用方式:注册后先运行 ~/.tmux.services --check 校验(不启动)。无参数仅补启动缺失服务;带 <name> 启动单个;--restart <name> 精确重启;--restart-all 全量重启;--status 查看状态;--logs 看最近 200 行;--attach 附着;--stop 精确停止。存在性检查与操作均用 tmux 的 =<session> 精确匹配。
限制:--restart-all 非事务,失败不回滚;启动后 1 秒稳定窗口内 session 消失返回 70,仅为排查提示,不是端口或 HTTP 健康检查。不 source 外部配置、不 eval 服务命令;路径会物理规范化,拒绝符号链接与 tools/ 外入口;密钥不应写入 ~/.tmux.services。退出码:0 完成,64 参数或配置错误,66 launcher 问题,69 tmux 缺失或目标未运行,70 启停失败或服务立即退出。TMUX_SERV_SOCKET_NAME 仅供测试隔离,需在调用前 export。安装器只在标记完整且合并校验通过时升级,标记缺失或重复会拒绝修改。