Claude Code Cron 定时任务:从入门到自动化
一句话总结:Cron 是 Claude Code 内置的定时任务调度器,让你可以像设置闹钟一样,让 AI 在指定时间自动执行任务------从"每隔 10 分钟检查部署状态"到"每天早上 9 点生成日报",都只需一句话。
流程图
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 Cron | Claude 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 脚本
bash
# 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 ←→ 进程
c
// 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
bash
# 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
bash
# Linux inotify:监控文件变化,变化时执行脚本
inotifywait -m /etc/config/ -e modify |
while read path action file; do
systemctl reload myapp # 配置文件变了就重载服务
done
bash
# 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 服务
bash
# 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 * * * *