在 Linux 系统中,任务计划(定时任务)主要通过 cron 服务实现,其时间配置字符串称为 cron 表达式。以下是详细格式说明:
cron 表达式由 5 个时间字段组成(部分实现支持 6 或 7 个字段),格式如下:
* * * * * <command-to-execute>
每个字段按顺序表示:
分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-7, 0和7均代表周日) [用户] [命令]
字段 | 取值范围 | 说明 |
---|---|---|
分钟 | 0-59 | 每小时的第几分钟执行 |
小时 | 0-23 | 每天的第几小时执行 |
日 | 1-31 | 每月的第几天执行 |
月 | 1-12 或 JAN-DEC | 每年的第几个月执行 |
星期 | 0-7 (0=7=周日) | 每周的星期几执行(0或7为周日) |
字符 | 作用 | 示例 |
---|---|---|
* |
匹配任意值 | * * * * * 每分钟 |
, |
指定多个值 | 0,30 * * * * 每小时的0分和30分 |
- |
指定范围 | 0 9-17 * * * 每天9点到17点整点 |
/ |
间隔频率 | */15 * * * * 每15分钟 |
? |
仅用于日 或星期 (表示无意义) |
0 0 * * ? 每天午夜(某些系统) |
L |
最后一天(月份或星期) | 0 0 L * * 每月最后一天 |
W |
最近工作日(避免周末) | 0 0 15W * * 每月15日最近的工作日 |
表达式 | 说明 |
---|---|
0 * * * * |
每小时整点执行 |
*/5 * * * * |
每5分钟执行 |
0 2 * * * |
每天凌晨2点执行 |
0 0 * * 0 |
每周日午夜执行 |
0 0 1 * * |
每月1日午夜执行 |
0 8-18/2 * * * |
每天8点到18点,每2小时执行 |
@reboot |
系统启动时执行(非标准cron格式) |
用户字段(可选):
在 /etc/crontab
或系统级任务中需指定用户,如:
* * * * * root /path/to/command
环境变量:
cron 默认环境与用户shell不同,建议脚本中使用绝对路径或在cron中定义PATH
。
日志:
执行日志通常位于 /var/log/cron
或 syslog
中。
编辑方式:
crontab -e
/etc/crontab
或 /etc/cron.d/
下的文件。某些实现(如 Spring Cron)支持 6字段(秒级精度):
<秒> <分> <时> <日> <月> <星期>
通过合理组合这些字段和符号,可以灵活配置各种定时任务。建议使用 Crontab Guru 在线工具验证表达式。