定时守护

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

cron 作业可靠性护栏,脚本优先、确定环境、静默成功,跨平台故障模式一网打尽. 定时守护为cron作业与后台任务提供可靠性护栏,遵循脚本优先、确定环境、静默成功三原则,覆盖shell引用陷

一句话选型结论

按资料字段整理

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

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

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install zcwl/cron-guard
  1. 1
    确认客户端支持

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方zcwl仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 enterprise
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1790755865
正文体量13.1 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 全文

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

定时守护

cron 作业的失败很少是"逻辑 bug",多半是 shell 引用炸了、环境漂移了、管道误报了。本技能用"脚本优先 + 确定环境 + 静默成功"三原则,把这些无聊但致命的坑堵死。

分层定位

层级 技能 职责
守护层 定时守护(本技能) 脚本可靠性、shell 陷阱、跨平台加固
精通层 定时大师 heartbeat/cron 决策、推送策略
易用层 定时助手 自然语言、模板、成本优化
引擎层 定时调度专家 时区、并发、自清理、熔断

本技能管"被调度的脚本怎么写得可靠",引擎管"调度本身怎么可靠"。

三大原则

原则 1:脚本优先

禁止在 cron 里写多行 bash -lc '...'。把逻辑放进仓库脚本,cron 只跑一行短命令。

# 错误:cron 里塞多行 shell(引用地狱)
bash -lc 'cd /app && for f in *.csv; do python3 process.py "$f" && mv "$f" done/; done'

# 正确:cron 跑一个脚本
python3 tools/process_all.py

原则 2:确定环境

cron 执行环境的 cwd、PATH、环境变量与交互式 shell 不同。必须显式确定:

# 脚本开头确定 cwd
cd "$(dirname "$0")/.." || exit 1

# 文档化所需环境变量
: "${API_KEY:?API_KEY 未设置}"
: "${DATA_DIR:?DATA_DIR 未设置}"

原则 3:静默成功

成功时不输出任何内容(或只输出 NO_REPLY),只在失败时告警。避免每次成功都发通知淹没用户。

# NO_REPLY 约定
if do_work; then
  echo "NO_REPLY"   # 静默成功
  exit 0
else
  echo "ALERT: 任务失败 - $(date)" >&2
  exit 1
fi

若运行时不支持 NO_REPLY,理解为"成功时打印空"。

快速开始:4 步加固

  1. 逻辑进脚本:把 cron 命令的逻辑移到 tools/<job>.py 或 tools/<job>.sh。
  2. cron 只跑一行:python3 tools/<job>.py(不要多行 bash -lc)。
  3. 确定 cwd/env:脚本内 cd 到仓库,文档化环境变量。
  4. 静默成功:成功打印空/NO_REPLY,失败才告警。

加固头部模板(可直接粘贴)

在 cron 任务说明或脚本开头加入这两行:

加固要求(必须):遵循脚本优先、确定 cwd、静默成功原则。
多步/解析逻辑写入 tools/*.py 脚本,cron 只跑一行短命令。

跨平台适配

原始方案仅覆盖 POSIX(bash/sh)。本技能补充 Windows/PowerShell 等效模式:

原则 POSIX (bash/sh) Windows (PowerShell)
脚本优先 python3 tools/job.py python tools\job.py
确定 cwd cd "$(dirname "$0")/.." Set-Location $PSScriptRoot\..
必需变量 : "${VAR:?未设置}" if (-not $env:VAR) { throw "VAR 未设置" }
静默成功 echo "NO_REPLY" Write-Output "NO_REPLY"(或无输出)
错误退出 set -euo pipefail $ErrorActionPreference = "Stop"
错误告警 echo "ALERT" >&2 Write-Error "ALERT"

可移植性铁律:不要硬编码某台机器的绝对路径。优先用仓库相对路径、文档化的环境变量、最小化的 cd 包装。

故障模式目录(核心差异化)

模式 1:unexpected EOF while looking for matching ')'

症状:cron 报语法错误,找不到匹配括号。

原因:
- $(...) 命令替换未闭合
- bash -lc '...' 嵌套引号断裂

修复模板:把整段多行 shell 替换为脚本,cron 只跑 python3 tools/<job>.py。

模式 2:pipefail + head 导致 SIGPIPE 误报

症状:命令明明输出正常,却以非零退出码失败。

原因:set -o pipefail 下,head 提前关闭管道,上游收到 SIGPIPE 被视为错误。

# 错误:pipefail + head 误报
set -euo pipefail
cat bigfile.log | head -10   # head 读够关闭管道 → cat 报 SIGPIPE → 整体失败

修复模板:

# 方案 A:去掉 pipefail(仅此场景)
set -euo pipefail
cat bigfile.log | head -10 || true

# 方案 B(推荐):在脚本里只读需要的部分
python3 -c "
with open('bigfile.log') as f:
    for i, line in enumerate(f):
        if i >= 10: break
        print(line, end='')
"

模式 3:"本地能跑,cron 里失败"

症状:交互式 shell 正常,cron 里报 command not found 或路径错误。

原因:
- cwd 不同(cron 默认 HOME,非仓库目录)
- PATH 不同(cron 不加载 .bashrc/.zshrc)
- 环境变量缺失

修复模板:

#!/usr/bin/env bash
set -euo pipefail
# 确定 cwd
cd "$(dirname "$0")/.." || exit 1
# 显式 PATH(cron 的 PATH 很精简)
export PATH="/usr/local/bin:/usr/bin:/bin:$HOME/.local/bin"
# 文档化必需变量
: "${API_KEY:?API_KEY 未设置}"
# ... 实际逻辑 ...

模式 4:git push 被拒(non-fast-forward)

症状:! [rejected] ... (non-fast-forward),自动化向长期分支推送失败。

保守修复(不用 force-push):

# 被拒后:fetch 远程,把本地新提交移植上去,重试一次
if ! git push origin feature-branch; then
  git fetch origin feature-branch
  git rebase origin/feature-branch   # 或 cherry-pick
  git push origin feature-branch
fi

铁律:自动化脚本禁止 git push --force,会覆盖他人提交。

模式 5:Python -c 单行引号陷阱

症状:python3 -c "..." 在 cron 里引号错乱。

原因:双引号内的 $、" 被 shell 解释。

修复模板:把 -c 内容写成脚本文件,cron 跑 python3 tools/job.py。

模式 6:Windows 路径与反斜杠

症状:PowerShell 脚本路径解析错误。

原因:反斜杠被转义,或路径含空格未加引号。

修复模板:

# 用单引号字面路径,避免变量插值
Set-Location 'C:\Program Files\App'
# 或用 $PSScriptRoot 相对路径
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location $scriptDir

模式 7:临时文件残留

症状:脚本中断后临时文件未清理,下次运行冲突。

修复模板:

# trap 确保退出时清理
TMPFILE=$(mktemp)
trap 'rm -f "$TMPFILE"' EXIT
# ... 使用 $TMPFILE ...
# PowerShell 等效
$tmp = New-TemporaryFile
try {
  # 使用 $tmp
} finally {
  Remove-Item $tmp -ErrorAction SilentlyContinue
}

模式 8:并发执行冲突

症状:周期任务未跑完下一轮就启动,数据冲突。

修复模板:文件锁防并发:

LOCKFILE="/tmp/job.lock"
exec 200>"$LOCKFILE"
if ! flock -n 200; then
  echo "NO_REPLY"  # 上一轮还在跑,静默跳过
  exit 0
fi
# ... 实际逻辑 ...

上线前预检清单

把 cron 作业上线前过一遍这个清单:

## cron 作业上线预检
- [ ] 逻辑在脚本文件中,cron 只跑一行命令
- [ ] 脚本开头确定 cwd(cd 到仓库)
- [ ] 所需环境变量已文档化并校验
- [ ] PATH 已显式设置(不依赖 .bashrc)
- [ ] 成功时静默(NO_REPLY 或无输出)
- [ ] 失败时输出简短告警到 stderr
- [ ] 临时文件用 trap 清理
- [ ] 周期任务有文件锁防并发
- [ ] 无 force-push / 无 rm -rf 危险操作
- [ ] 本地用 cron 模拟环境测试过(env -i)

本地模拟 cron 环境测试:

# 用最小环境模拟 cron 执行
env -i HOME="$HOME" PATH="/usr/local/bin:/usr/bin:/bin" \
  bash -c 'cd /repo && python3 tools/job.py'

NO_REPLY 约定详解

许多平台把精确输出 NO_REPLY 视为"静默成功"(不触发人工通知)。

场景 输出 平台行为
成功 NO_REPLY(或空) 不通知
成功但有需知 简短摘要 通知(低优先级)
失败 ALERT: <原因> 到 stderr 通知(高优先级)

若运行时不支持 NO_REPLY,等效于"成功时打印空"。

场景化指南

场景 A:加固现有 cron 作业

# 1. 把 cron 里的多行命令提取为脚本
mkdir -p tools
cat > tools/daily-sync.py <<'EOF'
#!/usr/bin/env python3
import sys, os
os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# ... 同步逻辑 ...
if success:
    print("NO_REPLY")
else:
    print("ALERT: 同步失败", file=sys.stderr)
    sys.exit(1)
EOF
chmod +x tools/daily-sync.py

# 2. cron 改为一行
# 旧: bash -lc 'cd /app && python3 sync.py && ...'
# 新: python3 /repo/tools/daily-sync.py

场景 B:跨平台定时作业

# 检测平台跑对应脚本
case "$(uname -s)" in
  Linux*|Darwin*) python3 tools/job.py ;;
  MINGW*|MSYS*|CYGWIN*) python tools/job.py ;;
  *) echo "ALERT: 不支持的平台" >&2; exit 1 ;;
esac

场景 C:Agent 长驻守护脚本

# tools/guardian.sh
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.." || exit 1
LOCKFILE="/tmp/guardian.lock"
exec 200>"$LOCKFILE"
flock -n 200 || { echo "NO_REPLY"; exit 0; }

# 健康检查
if curl -sf http://localhost:8080/health >/dev/null; then
  echo "NO_REPLY"
else
  echo "ALERT: 服务健康检查失败 $(date)" >&2
  exit 1
fi

FAQ

Q:我的 cron 作业在 Windows 上跑怎么办?
A:用 PowerShell 脚本替代 bash 脚本,遵循同样的三原则。参考跨平台适配表。Windows Task Scheduler 调度 powershell -File tools\job.ps1。

Q:NO_REPLY 必须精确匹配吗?
A:是的,精确输出 NO_REPLY(大写、无多余空格)。若平台不识别,等效于"成功时无输出"。

Q:脚本优先是不是过度工程?
A:不是。多行 shell 在 cron 里的引号陷阱几乎不可避免。脚本文件可测试、可版本控制、可 lint,长期收益远大于"省一个文件"。

Q:pipefail 到底该不该用?
A:该用,但要注意 | head 场景。set -euo pipefail 是好习惯,遇到 SIGPIPE 误报时局部 || true 或改用脚本读取。

Q:force-push 真的完全禁止吗?
A:自动化脚本里禁止。个人临时分支可酌情,但 cron 作业绝不能 force-push,会覆盖他人成果。

Q:和定时调度专家有什么区别?
A:本技能管"脚本写得可不可靠",定时调度专家管"调度得可不可靠"。一个防 shell 炸,一个防漏跑。

故障排查速查

症状 查这里
unexpected EOF / 引号错误 模式 1:脚本优先
明明成功却报失败 模式 2:SIGPIPE
本地能跑 cron 不行 模式 3:cwd/env 漂移
git push 被拒 模式 4:non-fast-forward
python -c 引号乱 模式 5:写脚本文件
Windows 路径错 模式 6:PowerShell 路径
临时文件冲突 模式 7:trap 清理
周期任务重叠 模式 8:文件锁

依赖说明

运行环境

  • Agent 平台:支持 SKILL.md 的任意 AI Agent
  • 操作系统:Linux / macOS(POSIX)/ Windows(PowerShell)
  • Shell:bash 4+ / sh / PowerShell 5+

第三方依赖

依赖项 类型 是否必需 获取方式
bash 或 PowerShell Shell 必需 系统自带
python3 运行时 推荐(脚本载体) 系统自带或 python.org
flock CLI Linux/Mac 推荐(文件锁) util-linux 自带
curl CLI 可选(健康检查) 系统自带
LLM API API 必需 由 Agent 内置 LLM 提供

API Key 配置

  • 本技能本身无需 API Key。
  • 被守护的脚本可能需要外部 API Key,必须在脚本内通过环境变量引用并文档化,禁止硬编码。

可用性分类

  • 分类:MD+EXEC(Markdown 指南 + 脚本执行)
  • 说明:本技能提供加固原则与故障模式目录,Agent 据此编写/审查 cron 脚本,实际执行由调度系统调用脚本。

常见问题

5 问
答案由本站依据条目字段整理
定时守护怎么安装?

在支持 Skills 的客户端里执行:skillhub install zcwl/cron-guard。安装方式为未标注。装完刷新技能列表或重开客户端。

定时守护支持哪些客户端?

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

定时守护权限高吗,安全吗?

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

定时守护收费吗?

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

定时守护用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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