Cron表达式由5个或6个字段组成,表示不同的时间单位,格式如下:
* * * * * [command]
或
分钟 小时 日期 月份 星期 [command]
对于某些系统(如Quartz调度器),可能使用6个字段,第一个字段表示秒:
秒 分钟 小时 日期 月份 星期 [command]
字段位置 | 字段含义 | 取值范围 | 允许的特殊字符 |
---|---|---|---|
1 | 分钟 | 0-59 | , - * / |
2 | 小时 | 0-23 | , - * / |
3 | 日期 | 1-31 | , - * ? / L W |
4 | 月份 | 1-12 | , - * / |
5 | 星期 | 0-7 (0和7都代表周日) | , - * ? / L # |
*
(星号):表示匹配任意值
,
(逗号):用于指定多个值
0,15,30,45 * * * *
表示每小时的第0、15、30、45分钟-
(连字符):用于指定范围
0 9-17 * * *
表示每天9点到17点之间的整点/
(斜杠):用于指定步长
*/15 * * * *
表示每15分钟0 */2 * * *
表示每2小时?
(问号):仅用于日期和星期字段,表示"不指定值"
L
(Last):表示"最后"
0 0 L * *
表示每月最后一天的午夜0 0 * * 5L
表示每月最后一个星期五每分钟执行一次:
* * * * * [command]
每5分钟执行一次:
*/5 * * * * [command]
每小时的第30分钟执行:
30 * * * * [command]
每天凌晨1点执行:
0 1 * * * [command]
每周一上午9点执行:
0 9 * * 1 [command]
每月1号凌晨0点执行:
0 0 1 * * [command]
每天上午9点到下午5点,每小时执行一次:
0 9-17 * * * [command]
每周工作日(周一到周五)上午10点执行:
0 10 * * 1-5 [command]
每月最后一天的午夜执行:
0 0 L * * [command]
每30秒执行一次(需要特殊处理,通常通过sleep实现):
* * * * * [command]
* * * * * sleep 30; [command]
不同系统的cron实现可能有细微差别,特别是对于星期字段,有些系统0表示周日,有些系统7表示周日
命令中的百分号(%)需要转义,使用反斜杠(\%),否则会被解释为换行符
环境变量可能与交互式shell不同,建议在脚本中设置完整路径
输出默认会发送邮件给用户,若要禁止输出可以使用重定向:
* * * * * [command] >/dev/null 2>&1
编辑crontab文件通常使用crontab -e
命令
希望这个教程能帮助你理解和使用cron定时任务!