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

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(重启不丢失)

注意事项

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

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

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

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

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

总结

  • Claude Code Cron 是 Unix Cron 的 AI 升级版:定时触发 + AI 自主执行
  • 三个工具:CronCreate(创建)、CronList(查看)、CronDelete(删除)
  • 支持一次性任务(闹钟)和周期任务(循环定时器)
  • 可以和 Hook、Skill、Agent 组合使用,构建完整的自动化工作流
  • 用自然语言描述任务,Claude 帮你翻译成 cron 表达式------不需要手写 */5 * * * *
相关推荐
灵晔君1 小时前
【Linux】进程(三)——进程切换、O (1) 调度、环境变量、命令行参数
linux·运维·服务器
云边云科技_云网融合1 小时前
大模型聚合时代:云边云科技 AI 网关轻量化赋能企业落地
大数据·运维·网络·人工智能
Waay1 小时前
MySQL基础高频考点
运维·mysql·adb
yzwlord2 小时前
【无标题】
linux·运维·rust·ssh
晚风_END2 小时前
Linux|操作系统|最新版zfs编译后的适用于centos7的rpm安装包完全离线安装介绍
linux·运维·服务器·c++·python·缓存·github
銳昊城2 小时前
项目八: 配置与管理FTP服务器(3) C3
运维·服务器
网络与设备以及操作系统学习使用者2 小时前
ARP报文保护触发与解决详解
运维·网络·学习·华为
MXsoft6182 小时前
**监控告警优化:告别告警风暴,精准定位故障根源**
运维
IT策士2 小时前
深入浅出:使用 Gunicorn + Nginx + Docker 将 Django 项目部署到云服务器
nginx·docker·gunicorn