linux Cheatsheet
Cron 表达式速查表
Cron 表达式一页速查:分/时/日/月/周 5 段格式说明、每 5 分钟与工作日等常用示例、*/N 与 A-B/A,B,C 特殊符号、@reboot/@daily/@hourly 时间宏,以及 PATH 与输出重定向等踩坑要点。
把 cron 表达式的格式、常用示例、特殊符号和排坑要点整理在一页,写定时任务时直接查表改参数。
表达式格式
- 标准格式共 5 个字段:分 时 日 月 周
* * * * * command - 第 1 个字段,每小时内的第几分钟,0 到 59
分钟 (0-59) - 第 2 个字段,一天内的第几小时,0 到 23,0 表示午夜
小时 (0-23) - 第 3 个字段,每月的第几天,1 到 31
日 (1-31) - 第 4 个字段,每年的第几月,1 到 12
月 (1-12) - 第 5 个字段,0 和 7 都是周日,1 到 6 为周一到周六
周 (0-7)
常用示例
- 每 5 分钟执行一次
*/5 * * * * command - 每小时整点执行
0 * * * * command - 每天凌晨 3 点执行
0 3 * * * command - 每周一凌晨执行
0 0 * * 1 command - 每月 1 号凌晨执行
0 0 1 * * command - 工作日 9 点到 18 点每小时执行
0 9-18 * * 1-5 command - 每 30 分钟执行一次
*/30 * * * * command - 每周日午夜执行
0 0 * * 0 command
特殊符号
- 任意值,表示该字段不做限制,每个时间单位都匹配
* - 每 N 个单位执行一次,如 */5 表示每 5 分钟
*/N - 范围,如 9-17 表示 9 到 17 之间每个单位
A-B - 列表,如 1,3,5 表示周一、三、五
A,B,C - 最后,如 0 0 L * * 表示每月最后一天(部分 cron 实现支持)
L
特殊时间宏
- 系统启动时执行一次,常用于启动后台服务
@reboot - 每年执行一次,等价于 0 0 1 1 *
@yearly / @annually - 每月执行一次,等价于 0 0 1 * *
@monthly - 每周执行一次,等价于 0 0 * * 0
@weekly - 每天执行一次,等价于 0 0 * * *
@daily / @midnight - 每小时执行一次,等价于 0 * * * *
@hourly
容易踩的坑
- cron 环境变量与交互 shell 不同,PATH 可能不完整,命令找不到时在脚本里显式 export PATH。
- 命令建议用绝对路径,避免 cron 环境找不到可执行文件,尤其是 node/python 等解释器。
- 输出默认会发邮件,建议重定向到日志文件,如 command >> /var/log/job.log 2>&1。
- 周和日同时指定时是"或"关系不是"与"关系,0 0 13 * 5 表示每月 13 号或每周五执行。
- 修改 crontab 后无需重启 cron 服务,保存即自动生效,但脚本本身需要确保有执行权限。