cron表达式详解
# 格式:分钟 小时 日 月 星期
# 示例:
0 9 * * * # 每天9点
0 9 * * 1-5 # 工作日9点
30 9 * * * # 每天9:30
0 */2 * * * # 每2小时
0 9 * * 1 # 每周一9点
0 8,12,18 * * * # 每天8点、12点、18点
调度频率选择原则
- ✅ 日报:每天一次(0 9 * * *)
- ✅ 周报:每周一次(0 9 * * 1)
- ✅ 股票分析:工作日9点(0 9 * * 1-5)
- ⚠️ 监控告警:每15-30分钟(*/15 * * * *)
- ❌ 不要每分钟运行LLM任务(*/1 * * * * 很贵且没必要)
时区问题
# 默认使用服务器本地时区
# 在Hermes中配置时区:
timezone: "Asia/Shanghai"
# 验证时区是否正确
date # 查看服务器当前时间
任务超时设置
- 简单数据采集任务:60-180秒
- 需要搜索+生成的任务:300-600秒
- 复杂Agent任务:600-1800秒
- no_agent脚本任务:按脚本实际运行时间+缓冲
失败通知设计
# cron任务失败时自动通知
# Hermes会在last_status=error时记录错误
# 可以在脚本中加入手动通知:
if [ $? -ne 0 ]; then
hermes send --to "weixin:用户ID" "⚠️ 任务失败:A股分析" --json
fi
常见陷阱
- ❌
*/1 * * * * 不是"每秒",是"每分钟"。每秒级别用系统cron不合适 - ❌ 同一时间安排太多任务 → 资源竞争,相互影响
- ❌ 任务超时时间设太短 → 在关键步骤被截断
- ✅ 错开调度时间:日报9:00,A股9:05,AI玩法9:30
调度设计的核心:任务频率匹配业务需要,时间错开避免冲突,超时时间留足余量,失败要有明确通知。