欢迎光临
我们一直在努力

Claude Code Cron 定时任务:从入门到自动化

Claude Code Cron 定时任务:从入门到自动化

一句话总结:Cron 是 Claude Code 内置的定时任务调度器,让你可以像设置闹钟一样,让 AI 在指定时间自动执行任务——从"每隔 10 分钟检查部署状态"到"每天早上 9 点生成日报",都只需一句话。

流程图

#mermaid-svg-96GDKWovJv1Zo5kg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-96GDKWovJv1Zo5kg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-96GDKWovJv1Zo5kg .error-icon{fill:#a44141;}#mermaid-svg-96GDKWovJv1Zo5kg .error-text{fill:#ddd;stroke:#ddd;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-96GDKWovJv1Zo5kg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-96GDKWovJv1Zo5kg .marker{fill:lightgrey;stroke:lightgrey;}#mermaid-svg-96GDKWovJv1Zo5kg .marker.cross{stroke:lightgrey;}#mermaid-svg-96GDKWovJv1Zo5kg svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-96GDKWovJv1Zo5kg p{margin:0;}#mermaid-svg-96GDKWovJv1Zo5kg .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#ccc;}#mermaid-svg-96GDKWovJv1Zo5kg .cluster-label text{fill:#F9FFFE;}#mermaid-svg-96GDKWovJv1Zo5kg .cluster-label span{color:#F9FFFE;}#mermaid-svg-96GDKWovJv1Zo5kg .cluster-label span p{background-color:transparent;}#mermaid-svg-96GDKWovJv1Zo5kg .label text,#mermaid-svg-96GDKWovJv1Zo5kg span{fill:#ccc;color:#ccc;}#mermaid-svg-96GDKWovJv1Zo5kg .node rect,#mermaid-svg-96GDKWovJv1Zo5kg .node circle,#mermaid-svg-96GDKWovJv1Zo5kg .node ellipse,#mermaid-svg-96GDKWovJv1Zo5kg .node polygon,#mermaid-svg-96GDKWovJv1Zo5kg .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#mermaid-svg-96GDKWovJv1Zo5kg .rough-node .label text,#mermaid-svg-96GDKWovJv1Zo5kg .node .label text,#mermaid-svg-96GDKWovJv1Zo5kg .image-shape .label,#mermaid-svg-96GDKWovJv1Zo5kg .icon-shape .label{text-anchor:middle;}#mermaid-svg-96GDKWovJv1Zo5kg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-96GDKWovJv1Zo5kg .rough-node .label,#mermaid-svg-96GDKWovJv1Zo5kg .node .label,#mermaid-svg-96GDKWovJv1Zo5kg .image-shape .label,#mermaid-svg-96GDKWovJv1Zo5kg .icon-shape .label{text-align:center;}#mermaid-svg-96GDKWovJv1Zo5kg .node.clickable{cursor:pointer;}#mermaid-svg-96GDKWovJv1Zo5kg .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#mermaid-svg-96GDKWovJv1Zo5kg .arrowheadPath{fill:lightgrey;}#mermaid-svg-96GDKWovJv1Zo5kg .edgePath .path{stroke:lightgrey;stroke-width:2.0px;}#mermaid-svg-96GDKWovJv1Zo5kg .flowchart-link{stroke:lightgrey;fill:none;}#mermaid-svg-96GDKWovJv1Zo5kg .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#mermaid-svg-96GDKWovJv1Zo5kg .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#mermaid-svg-96GDKWovJv1Zo5kg .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#mermaid-svg-96GDKWovJv1Zo5kg .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#mermaid-svg-96GDKWovJv1Zo5kg .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#mermaid-svg-96GDKWovJv1Zo5kg .cluster text{fill:#F9FFFE;}#mermaid-svg-96GDKWovJv1Zo5kg .cluster span{color:#F9FFFE;}#mermaid-svg-96GDKWovJv1Zo5kg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-96GDKWovJv1Zo5kg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#mermaid-svg-96GDKWovJv1Zo5kg rect.text{fill:none;stroke-width:0;}#mermaid-svg-96GDKWovJv1Zo5kg .icon-shape,#mermaid-svg-96GDKWovJv1Zo5kg .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#mermaid-svg-96GDKWovJv1Zo5kg .icon-shape p,#mermaid-svg-96GDKWovJv1Zo5kg .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#mermaid-svg-96GDKWovJv1Zo5kg .icon-shape .label rect,#mermaid-svg-96GDKWovJv1Zo5kg .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#mermaid-svg-96GDKWovJv1Zo5kg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-96GDKWovJv1Zo5kg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-96GDKWovJv1Zo5kg :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-96GDKWovJv1Zo5kg .start>*{fill:#1a5276!important;color:#fff!important;stroke:#2980b9!important;}#mermaid-svg-96GDKWovJv1Zo5kg .start span{fill:#1a5276!important;color:#fff!important;stroke:#2980b9!important;}#mermaid-svg-96GDKWovJv1Zo5kg .start tspan{fill:#fff!important;}#mermaid-svg-96GDKWovJv1Zo5kg .core>*{fill:#4a235a!important;color:#fff!important;stroke:#8e44ad!important;}#mermaid-svg-96GDKWovJv1Zo5kg .core span{fill:#4a235a!important;color:#fff!important;stroke:#8e44ad!important;}#mermaid-svg-96GDKWovJv1Zo5kg .core tspan{fill:#fff!important;}#mermaid-svg-96GDKWovJv1Zo5kg .decision>*{fill:#7d6608!important;color:#fff!important;stroke:#f39c12!important;}#mermaid-svg-96GDKWovJv1Zo5kg .decision span{fill:#7d6608!important;color:#fff!important;stroke:#f39c12!important;}#mermaid-svg-96GDKWovJv1Zo5kg .decision tspan{fill:#fff!important;}#mermaid-svg-96GDKWovJv1Zo5kg .action>*{fill:#7b241c!important;color:#fff!important;stroke:#c0392b!important;}#mermaid-svg-96GDKWovJv1Zo5kg .action span{fill:#7b241c!important;color:#fff!important;stroke:#c0392b!important;}#mermaid-svg-96GDKWovJv1Zo5kg .action tspan{fill:#fff!important;}#mermaid-svg-96GDKWovJv1Zo5kg .done>*{fill:#145a32!important;color:#fff!important;stroke:#27ae60!important;}#mermaid-svg-96GDKWovJv1Zo5kg .done span{fill:#145a32!important;color:#fff!important;stroke:#27ae60!important;}#mermaid-svg-96GDKWovJv1Zo5kg .done tspan{fill:#fff!important;}

recurring: false

recurring: true

你告诉 Claude 一个定时任务

Claude 调用 CronCreate 工具

任务类型?

一次性任务(到时候执行一次就删除)

周期任务(按 cron 表达式反复执行)

任务到期,系统触发

Claude 收到任务 prompt

Claude 执行任务并回复你

历史背景:从 Unix Cron 到 AI Cron

Unix Cron —— 1975 年诞生

Cron 这个名字来源于希腊语 Chronos(时间之神)。Unix 系统在 1975 年(Version 7 Unix)首次引入 cron 守护进程,它的设计思想很简单:

系统管理员把"什么时间做什么事"写进 crontab 文件,cron 守护进程每分钟检查一次,到时间就执行。

# 经典的 Unix crontab 格式
# 分 时 日 月 周 命令
30 2 * * * /usr/bin/backup.sh # 每天凌晨 2:30 执行备份
0 9 * * 1 /usr/bin/report.sh # 每周一早上 9:00 生成周报
*/5 * * * * /usr/bin/healthcheck # 每 5 分钟检查一次健康状态

50 年来,cron 一直是服务器运维的基石。但它有个局限:只能执行写死的脚本,无法应对需要"理解上下文 + 自主决策"的任务。

Claude Code Cron —— 2025 年

Claude Code 把 cron 带入了 AI 时代。区别在于:

Unix CronClaude Code Cron
执行者 Shell 脚本(写死逻辑) AI Agent(理解任务、自主决策)
任务描述 命令路径 + 参数 自然语言 prompt
失败处理 只能发邮件通知 AI 分析失败原因、自动重试
上下文 无(每次独立运行) 有(在对话上下文中执行)
典型任务 备份、清理日志 检查部署状态、监控 PR、定时报告

简单说:Unix Cron 是定时扳机,Claude Code Cron 是定时扳机 + AI 大脑。

核心概念(用嵌入式类比)

你熟悉 BMC 的定时器硬件,这个概念很好理解:

Claude Code Cron嵌入式类比
Cron 任务 硬件 Timer 配置(周期 + 回调函数)
cron 表达式 Timer 的分频系数和计数周期
prompt(任务描述) ISR 回调函数里要执行的逻辑
recurring: true 周期定时器(auto-reload)
recurring: false 单次定时器(one-shot)
CronList 查看所有已配置的 Timer
CronDelete 关闭并注销 Timer
durable: true 把 Timer 配置写入 NVRAM(重启不丢失)

实际操作

Claude Code 的 Cron 功能通过三个工具暴露给你(通过 Claude 间接调用):

工具 1:CronCreate — 创建定时任务

不需要你手动填参数,你只需要用自然语言告诉 Claude:

"每 10 分钟检查一下那个 PR 合入了没有"
"明天早上 9 点提醒我提交周报"
"每隔 1 小时跑一次部署状态的 curl 测试"

Claude 会自动翻译成 CronCreate 调用。背后的参数含义:

参数含义示例
cron 5 段 cron 表达式(本地时间) */10 * * * * = 每 10 分钟
prompt 到期时要执行的 prompt "检查 PR #42 的合入状态"
recurring true=周期任务, false=一次性
durable true=存盘不丢, false=仅本次会话

cron 表达式速查(5 段:分 时 日 月 周):

表达式含义
*/5 * * * * 每 5 分钟
0 * * * * 每小时整点
0 9 * * * 每天早上 9:00
0 9 * * 1-5 工作日早上 9:00
30 14 28 2 * 2 月 28 日下午 2:30(一次性)
0 0 1 * * 每月 1 号零点

工具 2:CronList — 查看所有定时任务

直接对 Claude 说:

"我有哪些定时任务?"
"列出所有 cron 任务"

工具 3:CronDelete — 取消定时任务

"取消那个每 10 分钟检查 PR 的任务"
"把任务 <job_id> 删掉"

实际场景演示

场景 1:监控部署状态(周期任务)

你:"每 5 分钟帮我 curl 一下 https://192.168.1.100/redfish/v1 看看是否在线,不在线就告诉我"

Claude 会创建:
CronCreate(
cron: "*/5 * * * *",
prompt: "curl -sk -o /dev/null -w '%{http_code}' https://192.168.1.100/redfish/v1,如果返回不是 200 就报告",
recurring: true
)

场景 2:明天早上提醒(一次性任务)

你:"明天早上 8:50 提醒我看昨晚的编译结果"

Claude 会创建:
CronCreate(
cron: "50 8 <明天的日期> * *",
prompt: "提醒用户查看昨晚的 WSL 编译日志",
recurring: false
)

场景 3:工作日站会前自动汇总(周期 + 持久化)

你:"每个工作日早上 8:55 帮我汇总昨天的 git 提交记录"

Claude 会创建:
CronCreate(
cron: "55 8 * * 1-5",
prompt: "git log –since='yesterday' –oneline –all,汇总成 3 行以内的简报",
recurring: true,
durable: true // 存盘,重启 Claude Code 后仍然有效
)

AI 概念 vs Linux 概念:一张表彻底理解

如果你熟悉 Linux,以下映射让你秒懂 Claude Code 的每个概念在 Linux 世界里对应什么。核心区别只有一句话:Linux 是你写命令让系统执行,Claude Code 是你描述目标让 AI 自己决定执行什么命令。

核心映射表

AI 概念Linux 对应一句话解释
Claude Code 主 Agent bash / zsh(Shell 本身) 你交互的入口,接收输入,调度一切
Tool(Read, Write, Bash, Edit…) 系统命令(cat, echo, grep, sed) 最小操作单元
Skill Shell 脚本(.sh) 把一系列操作编排成标准化流程
Agent(子 Agent) fork() + exec()(子进程) 派一个独立执行单元去干活,干完带回结果
Cron crond + crontab 定时触发执行
Hook inotify / udev 规则 / Signal handler 事件驱动回调,发生某事时自动执行
MCP Server systemd 服务 / Daemon 进程 后台常驻,提供外部能力
settings.json .bashrc / .profile 配置运行环境和行为
CLAUDE.md Makefile / 项目 README.md 定义项目规则和约定
dev-workflow.yaml Ansible playbook / CI 配置文件 声明部署目标、环境参数

逐个深入对比

Skill ←→ Shell 脚本

# Linux Shell 脚本:写死的执行序列
#!/bin/bash
cat /var/log/app.log | grep ERROR | wc -l # 统计错误行数
df -h | grep /dev/sda1 # 检查磁盘空间
if [ $? -ne 0 ]; then echo "磁盘满了"; fi

# Claude Code Skill:定义目标,AI 自主选择工具
Skill: req-analysis
目标:分析需求文档,输出实现计划
步骤:
1. 检查需求文档完整性(AI 自己决定用 Read 工具读文件)
2. 搜索相似实现(AI 自己决定用 Grep 还是 Glob)
3. 输出结构化计划(AI 自己组织输出格式)

区别:Shell 脚本里每一步都写死了 cat grep wc;Skill 只定义"要做什么",AI 自己决定调用哪个工具、怎么组合。脚本是执行路径,Skill 是目标描述。

Agent ←→ 进程

// Linux:fork 一个子进程去干独立任务
pid_t pid = fork();
if (pid == 0) {
// 子进程:只做一件事,做完 exit
execlp("gcc", "gcc", "-c", "module.c", NULL);
}
// 父进程:等子进程结束,拿 exit code
waitpid(pid, &status, 0);

Claude Code:派一个子 Agent 去干独立任务
Agent(
description: "编译模块",
prompt: "调用 wsl-build Skill,编译 module.c,返回编译结果"
)
// 主 Agent:等子 Agent 返回(前台模式)或继续处理其他事(后台模式)

区别:进程的"代码"是编译好的二进制,执行路径固定;Agent 的"代码"是一段 prompt + 可调用的工具集,执行路径由 AI 实时决策。进程跑的是机器码,Agent 跑的是推理链。

Cron ←→ crond/crontab

# Linux crontab:到时间执行一个固定命令
# 分 时 日 月 周 命令
*/5 * * * * /usr/local/bin/healthcheck.sh

# Claude Code Cron:到时间给 AI 发一段自然语言 prompt
CronCreate(
cron: "*/5 * * * *",
prompt: "检查目标设备是否在线,不在线就尝试 SSH 登录排查原因",
recurring: true
)

区别:Linux cron 到时间只能跑一个固定的脚本,脚本逻辑是死的。Claude Code cron 到时间会把一段 prompt 交给 AI,AI 理解任务后自主决定要调用哪些工具、如何处理异常。Linux cron 执行的是命令,Claude Code cron 执行的是意图。

Hook ←→ inotify / Signal Handler

# Linux inotify:监控文件变化,变化时执行脚本
inotifywait -m /etc/config/ -e modify |
while read path action file; do
systemctl reload myapp # 配置文件变了就重载服务
done

# Claude Code Hook:每次编辑文件后自动记录日志
# 在 settings.json 中注册 PostToolUse Hook
# 匹配 Edit 工具 → 执行 hello_hook.sh → 写入 hook_log.txt

区别:inotify 只能监控文件系统事件;Hook 可以监控 Claude Code 的所有运行时事件(工具调用前后、用户提交 prompt、响应结束、权限请求等)。inotify 监听的是文件描述符,Hook 监听的是 AI 行为流。

MCP Server ←→ Daemon / systemd 服务

# Linux systemd 服务:后台常驻,提供 HTTP API
[Unit]
Description=Redfish Mock Service
[Service]
ExecStart=/usr/bin/python3 /opt/redfish-mock/server.py
Restart=always

# Claude Code MCP Server:后台常驻,提供工具能力给 AI 调用
# .mcp.json 注册
{
"mcpServers": {
"redfish": {
"command": "python",
"args": ["mcp_server/redfish_server.py"]
}
}
}
# AI 在对话中直接调用 MCP 工具,像调用本地函数一样

区别:systemd 服务对外暴露的是 HTTP/REST API,人(或程序)调用它;MCP Server 对外暴露的是 AI 工具接口,AI Agent 在推理过程中直接调用它。systemd 服务面向上层应用,MCP Server 面向 AI 推理链。

一张图总结

Linux 世界的层级 Claude Code 世界的层级
───────────────── ─────────────────────
用户敲命令 用户说自然语言
│ │
▼ ▼
Shell (bash) 主 Agent
│ │
├── 执行命令 (ls, cat) ├── 调用 Tool (Read, Bash)
├── 运行脚本 (.sh) ├── 加载 Skill (工作流)
├── fork 子进程 ├── 派发子 Agent
├── crond 定时触发 ├── Cron 定时触发
├── inotify 事件监听 ├── Hook 事件监听
└── 连接后台服务 (DB, API) └── 调用 MCP Server

Linux:人 → 命令 → 执行 → 结果
AI: 人 → 意图 → AI推理选工具 → 执行 → 结果
↑ 这一层是 Linux 没有的 ↑

核心差异就在中间那一层:Linux 是人决定执行什么命令,AI 是 AI 自己决定执行什么命令。你用 Skill/Cron/Hook 就是在给 AI 的决策层设定规则和触发条件。

嵌入式视角(选读)

如果你有嵌入式/BMC 背景,这个类比可能更直观:

Claude Code Cron嵌入式类比
Cron 任务 硬件 Timer 配置(周期 + 回调函数)
cron 表达式 Timer 的分频系数和计数周期
prompt(任务描述) ISR 回调函数里要执行的逻辑
recurring: true 周期定时器(auto-reload)
recurring: false 单次定时器(one-shot)
CronList 查看所有已配置的 Timer
CronDelete 关闭并注销 Timer
durable: true 把 Timer 配置写入 NVRAM(重启不丢失)

注意事项

  • Cron 只在 Claude Code 运行时生效——它不是操作系统级的 cron,Claude Code 关了任务就不触发了。如果需要持久化,设置 durable: true,下次启动时任务会恢复。

  • 周期任务 7 天自动过期——recurring: true 的任务会在第 7 天最后一次触发后自动删除。如果需要长期运行,到期前重新创建。

  • 任务在 REPL 空闲时触发——如果正在跟 Claude 对话,cron 任务会排队等待,不会打断当前交互。

  • 不要用 cron 做高精度定时——cron 有秒级抖动(系统故意加了随机偏移),不适合毫秒级精确定时。

  • durable 任务存盘在 .claude/scheduled_tasks.json——可以手动查看和编辑这个文件来管理持久化任务。

  • 总结

    • Claude Code Cron 是 Unix Cron 的 AI 升级版:定时触发 + AI 自主执行
    • 三个工具:CronCreate(创建)、CronList(查看)、CronDelete(删除)
    • 支持一次性任务(闹钟)和周期任务(循环定时器)
    • 可以和 Hook、Skill、Agent 组合使用,构建完整的自动化工作流
    • 用自然语言描述任务,Claude 帮你翻译成 cron 表达式——不需要手写 */5 * * * *
    赞(0)
    未经允许不得转载:171主机测评 » Claude Code Cron 定时任务:从入门到自动化
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址