linux Cheatsheet

Cron 表达式速查表

Cron 表达式一页速查:分/时/日/月/周 5 段格式说明、每 5 分钟与工作日等常用示例、*/N 与 A-B/A,B,C 特殊符号、@reboot/@daily/@hourly 时间宏,以及 PATH 与输出重定向等踩坑要点。

把 cron 表达式的格式、常用示例、特殊符号和排坑要点整理在一页,写定时任务时直接查表改参数。

croncrontab定时任务linux

表达式格式

  • * * * * * command
    标准格式共 5 个字段:分 时 日 月 周
  • 分钟 (0-59)
    第 1 个字段,每小时内的第几分钟,0 到 59
  • 小时 (0-23)
    第 2 个字段,一天内的第几小时,0 到 23,0 表示午夜
  • 日 (1-31)
    第 3 个字段,每月的第几天,1 到 31
  • 月 (1-12)
    第 4 个字段,每年的第几月,1 到 12
  • 周 (0-7)
    第 5 个字段,0 和 7 都是周日,1 到 6 为周一到周六

常用示例

  • */5 * * * * command
    每 5 分钟执行一次
  • 0 * * * * command
    每小时整点执行
  • 0 3 * * * command
    每天凌晨 3 点执行
  • 0 0 * * 1 command
    每周一凌晨执行
  • 0 0 1 * * command
    每月 1 号凌晨执行
  • 0 9-18 * * 1-5 command
    工作日 9 点到 18 点每小时执行
  • */30 * * * * command
    每 30 分钟执行一次
  • 0 0 * * 0 command
    每周日午夜执行

特殊符号

  • *
    任意值,表示该字段不做限制,每个时间单位都匹配
  • */N
    每 N 个单位执行一次,如 */5 表示每 5 分钟
  • A-B
    范围,如 9-17 表示 9 到 17 之间每个单位
  • A,B,C
    列表,如 1,3,5 表示周一、三、五
  • L
    最后,如 0 0 L * * 表示每月最后一天(部分 cron 实现支持)

特殊时间宏

  • @reboot
    系统启动时执行一次,常用于启动后台服务
  • @yearly / @annually
    每年执行一次,等价于 0 0 1 1 *
  • @monthly
    每月执行一次,等价于 0 0 1 * *
  • @weekly
    每周执行一次,等价于 0 0 * * 0
  • @daily / @midnight
    每天执行一次,等价于 0 0 * * *
  • @hourly
    每小时执行一次,等价于 0 * * * *

容易踩的坑

  • cron 环境变量与交互 shell 不同,PATH 可能不完整,命令找不到时在脚本里显式 export PATH。
  • 命令建议用绝对路径,避免 cron 环境找不到可执行文件,尤其是 node/python 等解释器。
  • 输出默认会发邮件,建议重定向到日志文件,如 command >> /var/log/job.log 2>&1。
  • 周和日同时指定时是"或"关系不是"与"关系,0 0 13 * 5 表示每月 13 号或每周五执行。
  • 修改 crontab 后无需重启 cron 服务,保存即自动生效,但脚本本身需要确保有执行权限。