受限宿主守护进程防回收启动法

SKILL运维和基础设施
运维和基础设施 未标注权限 许可证不明确
安装这个技能

把服务交给别人的进程管理器托管时(群晖 DSM 套件中心、各类面板、容器外的 init 包装、CI runner 等),出现以下任一症状:

一句话选型结论

按资料字段整理

受限宿主守护进程防回收启动法是运维和基础设施类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类运维和基础设施 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_25c96d11/shou-xian-su-zhu-shou-hu-jin-cheng-fang-hui-shou-qi-dong-fa
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_25c96d11仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量7.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查服务与日志

按现象定位服务状态与日志线索。

写部署与巡检脚本

把重复的部署、巡检写成脚本。

故障排查

按步骤排查网络、依赖与配置。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在运维和基础设施场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
受限宿主守护进程防回收启动法当前 未标注权限 未标注 未标注 未标注 有
Azure 部署 调用外部服务 GitHub 仓库 664.2 万 Codex、Claude、Cursor 有
Azure diagnostics 问题管理 调用外部服务 GitHub 仓库 657.6 万 Codex、Claude、Cursor 有
Azure aigateway 部署 调用外部服务 GitHub 仓库 655.3 万 Codex、Claude、Cursor 有
Azure AI 搜索 调用外部服务 GitHub 仓库 651.4 万 Codex、Claude、Cursor 有
Azure Cloud migrate 部署 调用外部服务 GitHub 仓库 650.7 万 Codex、Claude、Cursor 有

SKILL.md 全文

7.4 KB
模型实际读到的说明书原文,来自技能仓库

06-成品-受限宿主守护进程防回收启动法

一、适用场景

把服务交给别人的进程管理器托管时(群晖 DSM 套件中心、各类面板、容器外的 init 包装、CI runner 等),出现以下任一症状:

  • 点「启动」立刻弹宿主标准错误(DSM 的「无法启动,请稍后再试一次」);
  • 手动跑得好好的,交给宿主拉就起不来,且看不到任何报错;
  • 进程确实起来了,但宿主仍判定"未运行",或 start 返回后进程就消失了。

共同点:脚本运行在一个被裁剪过的执行环境里(受限用户、PATH 不完整、无登录 shell、父进程会回收子进程),而这类约束在本地开发机上永远复现不出来。

二、操作步骤

  1. 解释器/运行时一律绝对路径扫描,不要用 command -v。受限用户的 PATH 通常不含 /usr/local/bin、也不含其它套件的 bin 目录。
    sh for p in /usr/local/bin/python3.13 /usr/bin/python3 \ /var/packages/python313/target/bin/python3.13 \ /var/packages/*/target/bin/python3* ; do [ -x "$p" ] || continue ver=$("$p" -c 'import sys;print("%d%02d"%sys.version_info[:2])' 2>/dev/null) || continue ... done
    取版本最高且 ≥ 门槛者;command -v 只作最后兜底。
    锚点:程序源代码/deploy/synology/spk/scripts/start-stop-status L20-37。

  2. 命中后自动补 LD_LIBRARY_PATH:社群源/自装运行时依赖自身 lib 目录,裸二进制在受限环境里找不到 libpython 会静默失败(不报错、直接退出)。
    sh PYDIR=$(dirname "$PYTHON"); PYROOT=$(dirname "$PYDIR") export LD_LIBRARY_PATH="$PYROOT/lib:$PYROOT/lib/python3.13/lib-dynload:$LD_LIBRARY_PATH"
    锚点:L51-54。

  3. 未命中时输出可诊断的失败:把每个候选的真实报错逐条收集进日志,而不是一句"未找到 Python"。
    锚点:L39-49([START][ERR] … $diag)。

  4. 用 setsid 脱离宿主进程组(无 setsid 回退 nohup),并断开标准输入:
    sh setsid "$PYTHON" -u app.py >> "$LOG" 2>&1 < /dev/null &
    锚点:L84-89。

  5. 就绪判定以「端口真正可连」为准,不用 kill -0:
    sh port_probe() { "$PYTHON" -c 'import socket,sys s=socket.socket(); s.settimeout(1.0) try: s.connect(("127.0.0.1", int(sys.argv[1]))); s.close(); sys.exit(0) except Exception: sys.exit(1)' "$1" >/dev/null 2>&1; }
    复用已探明的解释器,不依赖宿主是否装了 curl。
    锚点:L67-74。

  6. 轮询等待必须有上限(本例 40 次 × 1s),并区分三种结局:端口就绪(0) / 进程已退出(2) / 超时未监听(1),各自写不同的 [START][ERR] 并 exit 1。
    锚点:L91-113。

  7. 遵循宿主的退出码约定:DSM status 为 运行中 exit 0 / 未运行 exit 3(返回 1 会被判成异常);提供 log 动作回显日志路径,宿主 UI 的「日志」按钮才读得到。
    锚点:L127-139。

  8. 交付前体检:跑 scripts/daemon_start_guard_check.py <脚本路径>,逐项核对五道加固 + 超时上限 + 退出码约定。

三、注意边界

  • 这套加固针对的是宿主环境约束,不是产品缺陷。不要为了让脚本跑通就去改产品行为或降功能。
  • 端口从应用自身配置读取(本例 grep '^PORT=' "$APP/config.env"),不要硬编码;硬编码会和配置漂移后互相欺骗。锚点 L56-58。
  • 诊断信息里不要写真名、单位、内网真实拓扑;uname/id/目录权限/最近日志足够定位。
  • 真机复现不了时,把"加了诊断输出"本身当作交付:下一轮失败日志就能定位,而不是继续猜。
  • 日志要 >>(追加)且启动前 mkdir -p 日志目录,否则首次启动就因目录不存在而写不进去。锚点 L60。

四、反例避雷

  • ✗ 用 command -v python3 探测 → 受限用户 PATH 里根本没有,直接判"未找到",而实际是装了的。
  • ✗ 只补 PATH 不补 LD_LIBRARY_PATH → 裸二进制加载 libpython 失败,表现为"命令存在但一执行就没输出"。这是 DSM 上「无法启动」的头号根因。
  • ✗ nohup python app.py & 就完事 → 进程仍在宿主进程组内,start 动作一返回就被回收,宿主随后判"未运行"。必须 setsid。
  • ✗ 用 kill -0 判就绪 → 进程活着 ≠ 服务已监听。端口没起来就返回成功,宿主显示"运行中"但用户打不开页面,比直接报错更难查。
  • ✗ 轮询 while true 不设上限 → 应用启动卡住时,宿主的 start 动作永久挂起,UI 转圈到超时。
  • ✗ status 未运行时 exit 1 → 违反 DSM 约定(应为 3),宿主可能把"正常停止"显示成异常状态。
  • ✗ 失败只写 exit 1 不写日志 → 宿主 UI 只有一个笼统错误框,等于没有信息。必须把解释器路径、环境变量、uname、id、最近日志尾巴都落盘。

五、代码锚点 / 实战战绩

锚点:
- 程序源代码/deploy/synology/spk/scripts/start-stop-status(143 行)
- 解释器绝对路径扫描 L20-37;兜底 L37
- 诊断式失败 L39-49
- LD_LIBRARY_PATH 补全 L51-54
- 端口读取 L56-58;日志目录 mkdir -p L60
- is_running() L62-64;port_probe() L67-74
- setsid/nohup 启动 L84-89
- 就绪轮询与三态判定 L91-113
- stop L115-126;status 0/3 L127-134;log L135-139
- 附包只读体检:scripts/daemon_start_guard_check.py

战绩:
- 2026-10-15:用户截图「无法启动,请稍后再试一次」→ 按本流程连修三处(LD_LIBRARY_PATH 缺失、未脱离进程组、kill -0 判就绪),start-stop-status 由 3090 B 重写为 5425 B,并加入诊断落盘。
- 同日:preinst 不再声明依赖(避免精确包名不匹配被拦截,见 06-成品-群晖SPK打包与格式排查法);deploy/synology/hfms_start.sh 同步改为绝对路径扫描。
- 2026-10-16:附包体检器首跑 PASS——五道加固 + 就绪轮询上限 + status 退出码约定全部命中。
- 待真机复测:本流程在目标机的最终成效仍需用户在 DSM 上重新安装并点启动确认;脚本已强化诊断输出,若再失败可直接从「日志」按钮读到 [START][ERR] 与 Python traceback。

六、关联笔记

  • 与 06-成品-部署与开机自启SOP 互补:它解决"自己的机器上怎么常驻与开机自启"(Windows HKCU Run / Linux start.sh / 单实例 netstat 守护);本技能解决"交给别人的进程管理器托管时怎么不被环境掐死"。
  • 与 06-成品-群晖SPK打包与格式排查法 配套:那个管"包能不能装上",本技能管"装上后能不能起来"。
  • 与 04-开发-沙箱环境写文件限制规避法 同理:环境侧限制不通过改产品来绕过,只能通过适配层吸收。

七、版本记录

  • v1.0(2026-10-16):首版。据 2026-10-15 群晖 DSM 「无法启动」三轮排查实战固化,含五道加固 + 三态就绪判定 + 诊断落盘,附只读体检器 scripts/daemon_start_guard_check.py;真机成效待复测已如实标注。

常见问题

5 问
答案由本站依据条目字段整理
受限宿主守护进程防回收启动法怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_25c96d11/shou-xian-su-zhu-shou-hu-jin-cheng-fang-hui-shou-qi-dong-fa。安装方式为未标注。装完刷新技能列表或重开客户端。

受限宿主守护进程防回收启动法支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

受限宿主守护进程防回收启动法权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

受限宿主守护进程防回收启动法收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

受限宿主守护进程防回收启动法用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。