Cron Manager 是一个用于调度和管理 cron 定时任务的技能。当用户需要创建、列出、删除或测试计划任务时可以使用它。
主要能力
- 创建新的计划任务
- 列出已有的 cron 任务
- 删除计划任务
- 测试 cron 表达式
- 将人类可读的时间表转换为 cron 表达式
Cron 基础
Cron 表达式格式由五个字段组成,依次为:分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、星期(0-6,星期日为 0)。
常见调度模式包括:每分钟(* * * * *)、每小时(0 * * * *)、每天午夜(0 0 * * *)、每天上午 9 点(0 9 * * *)、每周日(0 0 * * 0)、每月(0 0 1 * )、每 5 分钟(/5 * * * )、每 30 分钟(/30 * * * *)。
管理 Cron 任务
列出用户 crontab:使用 crontab -l,或 crontab -l -u username 列出指定用户的任务。
添加任务:使用 crontab -e 编辑,或通过命令行追加,例如 (crontab -l 2>/dev/null; echo "0 9 * * * /path/to/script.sh") | crontab -。
删除任务:使用 crontab -r 删除所有任务,或 crontab -r -u username 删除指定用户的任务。
特定操作:可直接运行脚本以立即测试;使用 systemctl status cron(或 crond)检查 cron 服务状态;使用 journalctl -u cron(systemd)或 tail -f /var/log/cron(其他系统)查看日志。
Cron 工具
校验 cron 表达式:可使用 Python 的 croniter 库,检查表达式是否有效并输出接下来 5 次运行时间;也可使用在线工具或 crontab.guru。
人类可读转换:可使用 python-crontab 的 CronSitemap 输出人类可读描述。
脚本示例
- 备份脚本:每天凌晨 2 点执行备份,输出重定向到日志文件。
- 日志清理:每天凌晨 3 点清理超过 7 天的日志。
- 健康检查:每 5 分钟请求一次健康检查 URL。
特殊字符
- 表示任意值;, 表示列表(如 1,3,5);- 表示范围(如 1-5);/ 表示步长(如 */15 表示每 15)。
注意事项
- cron 任务使用用户的默认 shell 运行
- 脚本应使用绝对路径
- 建议将输出重定向到日志文件
- 需考虑时区,cron 使用系统时区
- Thepopebot 使用 config/CRONS.json 进行任务调度