⚙️ 自动化

定时任务配置

使用正确的 cron 语法和 shell 脚本创建和管理定时任务

★★☆ 中级 15 min 2025年1月13日

概述

配置定时任务需要理解 cron 语法并编写可靠的脚本。Cowork 可以帮你生成格式正确的 cron 表达式和配套的执行脚本。

适用场景

  • 定时备份重要文件或数据库
  • 自动生成周报、月报等定期报告
  • 定时同步本地与远程服务器的数据
  • 自动清理或归档过期文件

操作步骤

1

描述定时任务需求

用自然语言描述你需要的定时任务,包括执行时间和具体操作。

我需要在 Mac 上设置几个定时任务:

  1. 每天凌晨 2 点:将 ~/Documents 备份到外置硬盘
  2. 每周一上午 9 点:从 ~/Data/logs/ 生成周报
  3. 每 6 小时:同步本地文件夹到远程服务器
  4. 每月 1 号:归档 ~/Downloads 中超过 90 天的旧文件
2

指定输出要求

告诉 Claude 你需要的输出格式和存储位置。

请:

  • 生成 cron 条目
  • 为每个任务创建 shell 脚本
  • 包含错误日志记录
  • 将所有内容保存到 ~/Scripts/scheduled/
3

安装定时任务

Claude 会生成 cron 条目文件。使用以下命令安装:

查看现有的 crontab

crontab -l

编辑 crontab,添加生成的条目

crontab -e

或者直接从文件导入

crontab ~/Scripts/scheduled/crontab_entries.txt

在将脚本加入定时任务之前,务必先手动运行测试,确保脚本能够正常执行。定时任务的环境变量可能与交互式终端不同,注意使用绝对路径。

在 macOS 上,你也可以使用 launchd 来管理定时任务,它提供了更精细的控制选项。可以让 Claude 生成 plist 配置文件来替代 cron。

Cron 语法速查

┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 日期 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 星期 (0 - 6,0 是周日)
│ │ │ │ │
* * * * *

常用示例:

  • 0 2 * * * - 每天凌晨 2 点
  • 0 9 * * 1 - 每周一上午 9 点
  • 0 */6 * * * - 每 6 小时
  • 0 3 1 * * - 每月 1 号凌晨 3 点

常见问题

Q: 如何查看定时任务是否执行成功? A: 检查脚本中配置的日志文件。建议将标准输出和错误输出都重定向到日志文件:>> /var/log/task.log 2>&1

Q: 脚本手动执行正常,但定时任务不工作? A: 通常是环境变量问题。确保脚本中使用绝对路径,并在脚本开头设置必要的环境变量(如 PATH)。

Q: 如何处理任务执行失败的情况? A: 在脚本中添加错误处理逻辑,可以通过邮件通知或写入特定的错误日志文件来提醒自己。